这是一个这样的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?
最佳答案
您可以在将XMLHttpRequest()
设置为.responseType
的情况下使用"blob"
来请求图像文件。 blob.type.split("/")[1]
其中type
是MIME
的Blob
类型,[1]
之后的.split()
将是jpg
,jpeg
,png
或其他图像类型
window.onload = function() {
var aLink = document.querySelector("a");
var fileName = "image";
var request = new XMLHttpRequest();
request.responseType = "blob";
request.open("GET", "http://example.com/d4eb8d");
request.onload = function() {
var blob = this.response;
var type = blob.type.split("/")[1];
console.log(type);
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);
aLink.download = fileName + "." + type;
aLink.href = URL.createObjectURL(blob);
aLink.dispatchEvent(evt);
}
request.send()
}
plnkr http://plnkr.co/edit/To4uZXL8PUph9qG3azvZ?p=preview