Задать вопрос
@NikClik

Почему после скчаивания zip файла он поврежден?

Пытаюсь отдать пользователю zip файл на скачивание. Фронт - vue.js, бэк - django rest.
Так заварачиваю на бэке zip файл:
return FileResponse(open('static/Letters.zip', 'rb'), content_type='application/zip')

Так пытаюсь получить его на фронте:
axios.post('http://127.0.0.1:8000/api/create_letter_to_the_debtor', JSON.stringify(body))
      .then(
        function (response) {
          let blob = new Blob([response.data],)
          let link = document.createElement('a')
          link.href = window.URL.createObjectURL(blob)
          link.download = 'Letters.zip'
          link.click()})
      .catch(e => {
        console.log(e.response)
      });

но когда скачиваю zip файл получаю такую ошибку:
5bfbd6f0eeec4103645779.png
В чем проблема или что я делаю не так?
  • Вопрос задан
  • 552 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@NikClik Автор вопроса
решил проблему, подсмотрел Здесь, необходимо изименить:
axios.post('http://127.0.0.1:8000/api/create_letter_to_the_debtor', JSON.stringify(body))
      .then(
        function (response) {
          let blob = new Blob([response.data],)
          let link = document.createElement('a')
          link.href = window.URL.createObjectURL(blob)
          link.download = 'Letters.zip'
          link.click()})
      .catch(e => {
        console.log(e.response)
      });

На:
axios({
        method: 'POST',
        url:'http://127.0.0.1:8000/api/create_letter_to_the_debtor',
        data: JSON.stringify(body),
        responseType: 'blob',
      })
      .then( (response) => {
        // response => console.log(response))
          console.log(response)
          let blob = new Blob([response.data], { type: 'application/zip' })
          let link = document.createElement('a')
          link.href = window.URL.createObjectURL(blob)
          document.body.appendChild(link);
          link.click()
          document.body.removeChild(link);
        })
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы