Сохранение данных (октет-поток) из запроса в виде файла Excel приводит к повреждению файла - PullRequest
0 голосов
/ 29 мая 2019

Я возвращаю файл Excel (который работает нормально) как поток октетов из C # API, используя FileContentResult(byte[], MediaTypeNames.Application.Octet, "file.xlsx"

, а затем я хотел бы открыть приглашение загрузить файл из js, и все работает нормально, за исключением того, что файл поврежден

Я пробовал различные решения из этих постов, и файл Excel всегда приводил к повреждению

JavaScript: создание и сохранение файла

Имя файла BLOB-объекта JavaScript без ссылки

Создание двоичного двоичного объекта в JS

, а также FileSaver.js

$.ajax({
url: url,
type: 'POST',
data: formData,
processData: false,
contentType: 'application/json',
success: function (result) 
{
    saveFile(result);
}
});

Я знаю, что файл работает нормально, потому что, когда я тестирую его через Swagger, он работает нормально

Есть идеи?

1 Ответ

0 голосов
/ 29 мая 2019

Обходной путь:

Возвращая base64 этого файла и создавая элемент a на этой странице с атрибутом href со значением

data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,

изатем добавьте base64 к этому значению, поэтому

'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,'+base64

и затем выполните .click() для этой ссылки

Преобразование Base64, закодированного в XSLX

Вы можете указать имя файла, используя атрибут download=""

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...