2014-12-06 160 views
5

以JS开头并不是我的强项之一。过去几天我一直在尝试编辑这个JS函数,使其强制下载base64映像。当下载按钮被点击时,该功能的功能是打开一个新的窗口,其上有图像。用户然后必须右击并保存图片。我试图强制下载图片,而不是右键单击和“另存为”。强制下载base64图像

的dataurl农产品base4 PNG串(数据:图像/ JPEG; BASE64,/ 9J/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQ .........)

我试图使用如有人建议在另一个线程但没有工作。

欢迎您提出任何建议。谢谢。

savePaint: function() { 
      var self = this; 

      dataURL = self.context.canvas.toDataURL(); 

      var cntnt = $("<p class='dialogHeader'>Please right click and select 'Save Image As' option. Click here to Return</p>   <img id='PrintImage' src=" + dataURL + ">"); 
      self.newSavedImage.html(cntnt); 

      self.showPopup(self.newSavedImage, self.canvasWidth, self.canvasHeight) 
} 

回答

0

你可以指定一个不同的MIME类型,而不是图像/ JPEG这样浏览器就不会尝试打开本地图片:

data:application/octet-stream;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/... 

这将迫使下载文件,但我注意到在某些浏览器配置中,可以使用默认文件名进行自动保存,并且由于浏览器不知道真实文件类型,所以用户可以指定正确的类型。不幸的是,数据URI方案不允许建议的文件名。

查看Using HTML5/Javascript to generate and save a file获取更多可能的解决方案。根据您的要求,最好的选择可能是使用基于闪存的解决方案,如Downloadify

5

终于!我得到它的工作。对于任何面临同样问题的人,我在这里找到了一个函数http://danml.com/download.html,它可以让你强制下载base64。

+3

仅链接答案并不好。请将相关代码复制到您的答案中。 – 2016-04-22 19:55:55

+0

大拇指下降直到相关的代码添加。该链接太多是文字墙。更好的简单的代码在这里回答:http://stackoverflow.com/questions/14011021/how-to-download-a-base64-encoded-image – Andrew 2017-05-09 20:27:42