为什么文本/普通下载图像类型

时间:2018-03-23 03:52:24

标签: javascript jquery asp.net web-services mime-types

我有一个asp.net Web服务,如下所示返回base 64:

[WebMethod]
public string DownloadMediaFiles(string filePathUri, string fileName) {
 try {
  using(WebClient client = new WebClient()) {
   Byte[] bytes = client.DownloadData(filePathUri);
   string base64String = Convert.ToBase64String(bytes);
   return base64String;
  }
 } catch (Exception ex) {
  throw ex;
 }
}

以下是我的ajax电话:

 $.ajax({
      type: 'POST',
      url: "Path To My Webservice" + "DownloadMediaFiles",
      data: {
        filePathUri: filePath,
        fileName: 'a.txt'
      },
      contentType: 'application/json;charset=uf=8',
      dataType: 'json',
      success: function(data) {
        var element = document.createElement('a');
        element.setAttribute('href', 'data:text/plain;base64,' +
          data.d);
        element.setAttribute('download', 'a.txt');
        element.style.display = 'none';
        document.body.appendChild(element);
        element.click();
        document.body.removeChild(element);
      },
      error: function() {
        alert("error");
      }
    });

工作正常并下载文本文件,因为我已将dataUri设置为data:text / plain; base64但是当我提供文件名为'pointing_2017_07_17_03_17_60.png'这是一个图像文件时,它也在下载尽管datauri已设置to text / plain。

下面是我对txt文件的html标记以及图像文件:

txt文件:

<a href="data:text/plain;base64,certainbase64data" download="a.txt" style="display: none;"></a>

图片文件:

<a href="data:text/plain;base64,certainbase64data" download="pointing_2017_07_17_03_17_60.png" style="display: none;"></a>

href="data:text/plain;base64此属性正在下载文本和图像文件。

我想知道为什么text / plain正在下载图像和文本文件?

1 个答案:

答案 0 :(得分:1)

text/plain是文本文件的默认值。即使它真的意味着未知的文本文件,浏览器也会假设它们可以显示它。

  

请注意,text / plain并不代表任何类型的文本数据。如果他们   期望一种特定的文本数据,他们可能不会考虑   这是一场比赛。特别是如果他们从a下载文本/普通文件    声明CSS文件的元素,它们不会将其识别为   有效的CSS文件,如果带有text / plain。 CSS mime类型   必须使用text / css。

有关详情:MIME types

因此,您的pointing_2017_07_17_03_17_60.png文件也被视为文本文件。