Safari问题:下载的文件名是“未知”Javascript

时间:2015-08-21 09:35:42

标签: javascript angularjs html5 download safari

我已将现有数据转换为text / csv并能够在Chrome中下载该文件,但在iPad或Mac上使用Safari时,会打开一个名为“unknown”/“Untitled”的标签。这是我正在使用的代码 -

var hiddenElement = document.createElement('a');                        
hiddenElement.href = 'data:text/csv,'+ encodeURI(response);
hiddenElement.target = '_blank';
hiddenElement.download = 'purchase.csv';
hiddenElement.click();

无论如何,我能够将下载的文件显示为“purchase.csv”用于safari。

2 个答案:

答案 0 :(得分:0)

试试这个

int id = Get<int>("id"); 
int? mayBeId = Get<int?>("id");
string idAsString = Get<int?>("id")?.ToString();
double idAsDouble = (double)Get<int>("id"); 

答案 1 :(得分:0)

如果数据是本地数据-轻松!

我们只使用window.URL.createObjectURL()。让我们设置一些全局变量...

//var response = Already defined by OP!  Not sure what it is, but it's data to save.
var mimetype = "text/csv";
var filename = "purchase.csv";

现在,我们只需将type参数的标题设置为window.URL.createObjectURL() ...

a.href = window.URL.createObjectURL(new Blob([response], {
    encoding: "UTF-8",
    type: mimetype + ";charset=UTF-8",
}));

如果数据在Web上-仍然很容易,只需付出更多努力!

我们可以通过以下方式执行此操作:XMLHTTPRequest()下载文件数据,window.URL.createObjectURL()将数据转换为具有MIME类型标头的blob类型,然后正常进行设置a.download = filename;a.click();

将文件数据直接下载到JavaScript环境的抽象函数...

function load(url, callback) {
  var xhr = new XMLHTTPRequest();
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) callback(xhr.responseText);
  };
  xhr.open("GET", url, true);
}

然后下载数据,建立链接,然后单击它:

load("site.com/t.txt", function (contents) {
    var a = window.document.createElement('a');
    a.href = window.URL.createObjectURL(new Blob([response], {
        encoding: "UTF-8",
        type: mimetype + ";charset=UTF-8",
    }));
    a.download = filename;

    document.body.appendChild(a);
    a.click();
    a.remove();
});