这是一个这样的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.pngd4eb8d.jgp
如何获得图像的真实类型,以便可以指定download_name?

最佳答案

您可以在将XMLHttpRequest()设置为.responseType的情况下使用"blob"来请求图像文件。 blob.type.split("/")[1]其中typeMIMEBlob类型,[1]之后的.split()将是jpgjpegpng或其他图像类型

  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

07-26 09:37