Мой сервер передает мне файл .xls
(заголовки ниже) с типом содержимого application/vnd.ms-excel
"cache-control": "public"
"content-type": "application/vnd.ms-excel"
"last-modified": "Thu, 21 Mar 2019 09:25:53 GMT"
Поэтому я создаю файл на своем клиенте с использованием техники BLOB-объектов, но данные внутриповсюду (файл открывается, но таблицы разбиты).
const file = new Blob([response.body], {type: "application/vnd.ms-excel"});
const href = URL.createObjectURL(file);
Я не могу найти решение, почему.
Несколько вещей, которые я пытался:
открыл файлна сервере, и это нормально, так что это подтверждает, что проблема при передаче или реконструкции большого двоичного объекта клиента
при передаче в виде base64 вместо двоичного: та же проблема, так что подтверждение проблемы на части восстановления большого двоичного объекта
полный javascript (двоичный)
export(context, type, callback) {
context.$http.get(config.api_url + config.export_path + type,
{responseType: 'application/vnd.ms-excel'}
)
.then((response) => {
if (response.status === 200) {
const file = new Blob([response.body], {type: "application/vnd.ms-excel"});
const href = URL.createObjectURL(file);
// success
callback(context, 'success', href);
}
})
.catch(function (err) {
console.log(err)
})
},
полный javascript (base64)
exportBase64(context, type, callback) {
context.$http.get(config.api_url + config.export_path + type
)
.then(response => response.json())
.then((response) => {
if (response.file) {
const txt = atob(response.file);
const file = new Blob([txt], { type: "application/vnd.ms-excel" });
const href = URL.createObjectURL(file);
// success
callback(context, 'success', href);
} else {
// error
callback(context, 'error');
}
})
.catch(function (err) {
console.log(err)
})
}