Как скачать файл получаемый в ответе на POST запрос?

Получаю файл в ответ на POST запрос, перевожу их в JSON далее перевожу их в формат Uint8Array, но когда хочу преобразовать это в файл формата xlsx, получаю ошибку при открытии файла, что он повержден
Изначальный ответ
PK\x03\x04\x14\x00\x00\x00\b\x00\x16\x06TVFZ�\f�\x00\x00\x00�\x00\x00\x00\x10\x00\x00\x00docProps/app.xmlM�M\v…\x00\x00�\x01�/\x00\x00[Content_Types].xmlPK\x05\x06\x00\x00\x00\x00\t\x00\t\x00>\x02\x00\x00\x031\x00\x00\x00\x00

преобразованный в Uint8Array
Uint8Array(22891) [80, 75, 3, 4, 20, 0, 0, 0, 8, 0, 22, 6, 84, 86, 70, 90, 239, 191, 189, 12, 239, 191, 189, 0, 0, 0, 239, 191, 189, 0, 0, 0, 16, 0, 0, 0, 100, 111, 99, 80, 114, 111, 112, 115, 47, 97, 112, 112, 46, 120, 109, 108, 77, 239, 191, 189, 77, 11, 239, 191, 189, 48, 16, 68, 239, 191, 189, 74, 239, 191, 189, 239, 191, 189, 110, 85, 239, 191, 189, 32, 49, 32, 212, 163, 239, 191, 189, 239, 191, 189, 123, 72, 55, 54, 239, 191, 189, 100, 67, 118,


<template>
  <div style="display: flex; justify-content: space-between">
    <b-form-file v-model="file" name="123" class="mt-3" plain></b-form-file>
    <button @click="SendFile()" class="button Accept">ОТПРАВИТЬ</button>
  </div>
</template>


<script>
import api from "@/api/wagonPark";
export default {
  data() {
    return {
      file: null,
    };
  },
  methods: {
    SendFile() {

      console.log(this.file);
      let formData = new FormData();
      formData.append("file", this.file);
      api
        .postShipmentList(formData)
        .then(data => {
          console.log(data)
            let json = JSON.stringify(data)
          let buffer = Buffer.from(JSON.parse(json).data)
          console.log(buffer)
          let link = document.createElement('a');
          link.download = 'hello.xlsx';

          let blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;' });

          link.href = URL.createObjectURL(blob);

          link.click();

          URL.revokeObjectURL(link.href);
        })
    },
  },
};
</script>
  • Вопрос задан
  • 929 просмотров
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
api.postShipmentList(formData).then((data) => ...)

data должно быть блобом или хотя бы бинарным массивом. В любом случае запихивать его в JSON.stringify нет смысла
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы