ly0303521

修改设置,点击"下载"按钮直接下载

@@ -122,9 +122,7 @@ const DetailModal: React.FC<DetailModalProps> = ({ image, onClose, onEdit, onGen @@ -122,9 +122,7 @@ const DetailModal: React.FC<DetailModalProps> = ({ image, onClose, onEdit, onGen
122 )} 122 )}
123 123
124 <a 124 <a
125 - href={image.url}  
126 - target="_blank"  
127 - rel="noopener noreferrer" 125 + href={`${image.url}?download=true`}
128 download={`z-${isVideo ? 'video' : 'image'}-${image.id}.${isVideo ? 'mp4' : 'png'}`} 126 download={`z-${isVideo ? 'video' : 'image'}-${image.id}.${isVideo ? 'mp4' : 'png'}`}
129 className="flex items-center justify-center w-full py-3 bg-black dark:bg-white text-white dark:text-black rounded-xl font-medium hover:opacity-90 transition-opacity gap-2" 127 className="flex items-center justify-center w-full py-3 bg-black dark:bg-white text-white dark:text-black rounded-xl font-medium hover:opacity-90 transition-opacity gap-2"
130 > 128 >
@@ -86,7 +86,9 @@ const ImageCard: React.FC<ImageCardProps> = ({ image, onClick, onLike, currentUs @@ -86,7 +86,9 @@ const ImageCard: React.FC<ImageCardProps> = ({ image, onClick, onLike, currentUs
86 onClick={(e) => { 86 onClick={(e) => {
87 e.stopPropagation(); 87 e.stopPropagation();
88 const link = document.createElement('a'); 88 const link = document.createElement('a');
89 - link.href = image.url; 89 + // Append ?download=true to force server to send attachment header
  90 + link.href = `${image.url}?download=true`;
  91 + // Filename is optional here as server header takes precedence, but good for fallback
90 link.download = `z-${isVideo ? 'video' : 'image'}-${image.id}.${isVideo ? 'mp4' : 'png'}`; 92 link.download = `z-${isVideo ? 'video' : 'image'}-${image.id}.${isVideo ? 'mp4' : 'png'}`;
91 document.body.appendChild(link); 93 document.body.appendChild(link);
92 link.click(); 94 link.click();