У меня есть требование загрузить файл Excel в браузер. Я использую nodejs во внутреннем интерфейсе и обычный JavaScript во внешнем.
Моя конечная точка API - 'https://callerid -lookup.herokuapp.com / download '
/download/excel
res.status(200);
var path = './report.xlsx';
fs.readFile(path, function (err, data) {
res.setHeader('Content-disposition', 'attachment; filename=report.xlsx');
res.setHeader('Content-type', 'application/vnd.ms-excel');
console.log('server side1', data);
res.send(data);
});
Код переднего конца выглядит следующим образом
$.get("https://callerid-lookup.herokuapp.com/download", {
responseType : 'ArrayBuffer'
},
function (data, status) {
console.log("Data: " + data + "\nStatus: " + status);
var blob = new Blob([data], {
type : 'application/vnd.ms-excel'
});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = "report.xlsx";
link.click();
});
Я вижу загрузку файла, но в файле Excel, загруженном в первую ячейку, есть только [Объект, Объект].
Я пытался указать responseType как arraybuffer / blog в запросе http, но у меня ничего не получалось, помощь приветствуется
Файл журнала:
клиент получает данные: https://www.dropbox.com/s/w46o9gqt7z99bzt/client-response.txt?dl=0
сервер отправки данных: https://www.dropbox.com/s/xu7nzelbjbmzjwj/server-response.txt?dl=0
Обновлено с примером конечной точки API и кодом пользовательского интерфейса jquery