解决方案(或视情况而定)
基于闪存
目前我会说你最好的选择是坚持在 Flash 中操作你的按钮。如果您需要将按钮从主 Flash 运行时中移出,您可以尝试使用两个 Flash 嵌入,并使用LocalConnection
. 但是,我不建议这样做,因为LocalConnection
要正常工作会很痛苦,并且不能保证您不会遇到跨两个实例工作的安全沙箱问题。
基于服务器端
您可以实现一个保存系统,该系统将涉及将图像数据发送回服务器并形成前端可以请求的实际 URL。这将允许您指定您想要下载的任何内容。这样做的缺点是它需要一个服务器(因此不适用于离线应用程序),它还需要相当多的麻烦以一种方式发送图像数据,然后才将其拉下来......
我在这里更详细地介绍了这一点:
画布图像到图像文件
基于 HTML5
目前我不会像我在评论中建议的那样推荐数据 URL 下载,因为它还不是一个完整的解决方案。但是,从好的方面来说,我会密切关注顶级浏览器正在实施的内容,因为这个答案可能很快就会改变。
工作
基本上我只是尝试通过数据 URI 实现图像下载(认为这将是解决您的问题的最佳解决方案),一切正常,而且您可以很高兴地从您的 BitmapData 对象中获取您需要的 Base64 数据。但是,问题是无法在下载时指定文件名。因此,您最终会得到相当丑陋的文件名,甚至没有正确的扩展名。
<a href="data:image/octet-stream;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC">Click to Download File</a>
经过一番研究后,似乎没有可行的解决方法,但是有一些可以实施的规范会有所帮助:
<a download="filename.png" href="data:image/octet-stream;...">Download File</a>
下载属性正是针对我上面提到的问题而设计的,并且允许命名下载。不幸的是,我还没有找到实现它的浏览器......
参考