获取文件作为AJAX的回应?

我有一个通用的Ajax调用例程,我用它来调用node.js中的一个函数。 这个函数从服务器读取一个文件(主要是xls),然后把它传回客户端。

这里是我在Node.js(服务器端)的实现:

// FILE DOESNT EXISTS BEFORE, // FILE IS CREATED HERE THEN SAVED IN SERVER AS A FILE fs.readFile("/path/to/file.xlsx", function(err, file){ res.setHeader('Content-Type', 'audio/mpeg'); res.setHeader('Content-Disposition', 'attachment; filename=file.xlsx'); res.write(file, 'binary'); res.end(); }); 

这是我使用的ajax调用。

 $('#submit').click(function() { $.ajax({ url: '/', type:'POST', data: data, dataType: 'json', }).done(function(data) { console.log(data); }); }) 

我成功地获取打印在我的控制台( console.log(data) )的二进制数据。 我的问题是如何将这些data转换为适当扩展名的文件,然后提示浏览器保存它们?

任何build议或其他解决方法?

尝试使用FileReaderBloba元素, download属性

 $('#submit').click(function() { $.ajax({ url: '/', type:'POST', data: data, dataType: 'json', }).done(function(data) { console.log(data); var reader = new FileReader(); reader.onload = function(e) { $("a").attr({"href": e.target.result, "download":"filename"}) .get().click() } reader.readAsDataURL(new Blob([data])); }); })