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

Tim*_*Tim 9 javascript html5 canvas

我正在使用canvas,我可以将我的Canvas保存到png.

通过环顾四周,我发现了W3C给出的伟大的toDataURL()函数.

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

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

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

下载后,-file扩展名为.part

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

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

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

小智 6

如果您的目标只是现代浏览器并且不关心跨浏览器,那么可以使用元素的"下载"属性.以下是您的信息的一个示例:

<a target="_blank" href="https://www.google.com/intl/en_com/images/srpr/logo3w.png" download="testXXX.jpg">DOWNLOAD ME!</a>
Run Code Online (Sandbox Code Playgroud)

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

有关详细信息,请查看此有关html5rocks的Eric教程.


Fem*_*emi 5

不幸的是.当前dataURI(由canvas2image模块使用;实际上非常简洁)不支持指定文件名或内容处置头,因此强制浏览器生成另存为对话框的唯一方法是将content-type设置为octet-stream .

  • 问题是,如果您将内容类型更改为图像内容类型(例如*image/png*),浏览器会显示它,而不是提示保存.通常(如果使用服务器端解决方案),您可以设置**Content-Disposition**标头以强制下载和文件名,但`data` URI不支持(请参阅http://en.wikipedia. org/wiki/Talk%3AData%3A_URI_scheme#缺点了解更多详情). (2认同)