在Safari中,当我将图像从浏览器窗口拖到桌面时,图像从URL的最后部分获取其文件名。例如:
http://www.mysite.com/images/05
图片名称为
05.jpeg
这是一种在所有(最近的IE8 +)浏览器中保持一致的行为吗?
我可以决定从浏览器中拖出图像时会获得的任意文件名吗?
我尝试(在Safari中)设置图片的名称和 alt 标记,但这没有任何效果。
在提供图片时,我可以决定在服务器响应的标题中设置文件名吗?
答案 0 :(得分:0)
一种方法是在提供文件时在响应的标题中指定所需的文件名。
我正在使用php ...
header('Content-disposition: inline; filename=the-image.jpg');
当图像从浏览器窗口拖动到桌面时,文件名为 the-image.jpg
不幸的是,这在所有浏览器中都不一致,特别是 Firefox 不遵循规则并坚持使用URL的最后一部分来提供名称。< / p>
适用于所有浏览器的解决方案是避免在响应的标头中指定名称,并将名称设置为URL的最后一部分。
由于我可以管理我网站的路由,我采用的解决方案是让图像的路径以服务器忽略的字符串结束,并且唯一的目的是为图像定义文件名,以防它被拖出浏览器。
例如:
http://www.my-site.com/images/05/my%20custom%20filename.jpg
告诉服务器客户想要的图像是图像后面的参数,示例中的 05 。
重要的是要注意文件名必须是URI组件编码,转义空格,斜杠,百分比等等......
然后,应该从斜杠,反斜杠和其他可能最终造成混乱的字符中清除操作系统友好的文件名。