【发布时间】:2016-06-21 07:05:33
【问题描述】:
这是一个这样的 DOM。
<img id="this-is-the-image" src="http://192.168.1.100/Image_tmp/2016-06/d4eb8d">
我需要点击一个按钮,运行一个 JS,然后下载这个图像文件。
我已经完成了按钮和下载脚本。
一些代码:
```
function downloadFile(fileName, url) {
var aLink = document.createElement('a');
var blob = new Blob([url]);
var evt = document.createEvent("HTMLEvents");
getImageType(blob);
evt.initEvent("click", false, false);
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}
```
我有问题。我只能得到src "http://192.168.1.100/Image_tmp/2016-06/d4eb8d"或名称d4eb8d,但实际上图像是.png或.jpg。
浏览器可以查看,但是我save到我的电脑后,文件名变成了d4eb8d,而不是d4eb8d.png或d4eb8d.jgp。
如何获取图片的真实类型以便指定download_name?
【问题讨论】:
-
看来,这个脚本获取的是 url-string 数据而不是 img-data。我认为 FileReader 只能从本地读取文件。
-
“看来,这个脚本获取的是url-string数据而不是img-data。我认为FileReader只能从本地读取文件。”很好奇@的目的是什么987654333@ 是?您可以使用
XMLHttpRequest()将图像检索为Blob,然后使用FileReader()和response中的response作为.readAsDataURL()的参数;请参阅plnkr.co/edit/To4uZXL8PUph9qG3azvZ?p=preview 或使用response.type -
在 plnkr plnkr.co/edit/To4uZXL8PUph9qG3azvZ?p=preview 查看版本 2,使用
XMLHttpRequest().response.type.split("/")[1],其中.response是从图像请求返回的Blob,而不是FileReader() -
你是对的。我的 Blob([url]) 不是正确的 Blob。我才意识到。
-
什么是
url?您是否将imgsrc作为url传递给new Blob([url])?
标签: javascript image download file-type