使用“打开方式”对话框命名从 Canvas 保存的 PNG 文件

Name a PNG file saved from Canvas using an "open with" dialog

本文关键字:Canvas 保存 文件 PNG 对话框 方式 打开方式 使用      更新时间:2023-09-26

我正在使用画布,我可以将我的画布保存到png。

通过环顾四周,我发现了W3C给出的很棒的toDataURL()函数。

我也已经在使用虚无学的canvas2image,我们可以在这个页面上找到:http://www.nihilogic.dk/labs/canvas2image/

我注意到在 canvas2image 上,开发人员使用"image/octet-stream"打开"对话框,但会出现一些问题:

-picture name 是 toDataUrl() 返回的 ascii。

- 下载时文件扩展名.part

简而言之,当单击按钮时,我会提示"打开方式"对话框,例如"myImage.png"。

可能吗?任何帮助将不胜感激。

编辑:我有只使用Javascript的禁忌,我不能使用一些不错的PHP技巧

如果您只针对现代浏览器并且不太关心跨浏览器,那么有一个可能的解决方案具有元素的"下载"属性。下面是一个示例供您参考:

<a target="_blank" href="https://www.google.com/intl/en_com/images/srpr/logo3w.png" download="testXXX.jpg">DOWNLOAD ME!</a>

只有一行,没有javascript,是的!您可以将 href 部分更改为数据 url,这也有效。

查看 Eric 在 html5rocks 上的教程以获取更多详细信息。

不幸的是不是。

目前data URI(由 canvas2image 模块使用;实际上非常整洁)不支持指定文件名或内容处置标头,因此强制浏览器生成另存为对话框的唯一方法是将内容类型设置为八位字节流。

好吧,在现实世界的Web应用程序中,高杭瑞的解决方案是远远不能接受的,根据

http://caniuse.com/#feat=download

您将拒绝所有IE,Safari,IOS Safari,Android用户使用此功能。

我认为鉴于 Canvas2Image 中的此限制,更好的解决方案是使用一些服务器端逻辑,如此处所述

Linuxatico