Невозможно сохранить файл Excel с сервера - PullRequest
0 голосов

Я создаю файл Excel с использованием библиотеки Aspose в. NET, и контроллер возвращает это:

public async Task<IActionResult> GetFile()
{
  byte[] bytes = null;    
  await Task.Run(() => bytes = GetBytes());    
  return new FileContentResult(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
  {
    FileDownloadName = "Template.xlsx"
  };
}

На фронте React я отправляю запрос, подобный этому, из redux

dispatch({
  [CALL_API]: {
    method: HttpMethod.GET,
    types: [
      types.GET_FILE_REQUEST,
      types.GET_FILE_SUCCESS,
      types.GET_FILE_ERROR,
    ],
    endpoint: `getFile`,
    useLoader: true,
    responseType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  },
}).then((action) => {
  if (!action.error) {
    download({
      name: fileName,
      data: action.response,
      type: action.response.type,
    });
  }
});

Я получаю сообщение об ошибке «Неожиданный токен P в JSON в позиции 0». На сервере я попытался сохранить файл и проверил его правильность на диске, это нормально. Я также изменил значения типа ответа спереди и сзади, но результат всегда был одинаковым.

enter image description here

enter image description here

Есть идеи, где изъян?

1 Ответ

0 голосов

Удалось правильно загрузить файл после этих изменений на сервере и клиенте

// server
public async Task<IActionResult> GetFile()
{
  Stream stream = null;    
  await Task.Run(() => stream = GetStream());    
  return File(stream, "application/octet-stream");
}

// client
dispatch({
  [CALL_API]: {
    method: HttpMethod.GET,
    headers: {
      'Content-Type': 'application/json',
    },
    types: [
      types.GET_FILE_REQUEST,
      types.GET_FILE_SUCCESS,
      types.GET_FILE_ERROR,
    ],
    endpoint: 'getFile',
    useLoader: false,
    cacheBust: false,
    responseType: ResponseType.Blob,
  },
}).then((data) => {
  download({
    name: fileName,
    data: data.response,
    type: data.response.type,
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...