Задать вопрос
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Передача файла django?

Мне необходимо передать файл с Django на веб-страницу. Файл передается. Но в Excel не открывается, и визуально видно что кодировка файла отличается.
Сильно упрощенный код выглядит так (на сериалайзер и передачу pk не обращаем внимание - на логику это не влияет):

Сторона сервера:
class CEIViewset(GenericViewSet):
    queryset = CompetitionCEI.objects.all()
    permission_classes = (permissions.IsAuthenticated,)
    serializer_class = CompetitionCEISerializer

    @action(detail=False, methods=['POST'], permission_classes=(permissions.IsAuthenticated, ))
    def export_to_xls(self, request):
        ser = self.serializer_class(data=request.data)
        if ser.is_valid():
            pk = ser.validated_data.get('pk')

            with open(os.path.join(settings.BASE_DIR, 'data', 'sample.xls'), 'rb') as f:
                data = f.read()

            response = HttpResponse(data, content_type='application/xls; charset=utf-8')
            response['Content-Disposition'] = 'attachment; filename="sample.xls"'
            return response


Клиентская часть:
function exportXLS(pk) {
            $.ajax({
              method: 'POST',
              url: '/api/v1/cei/export_to_xls/',
              csrfmiddlewaretoken: '{{ csrf_token }}',
              contentType: 'application/json',
              responseType: 'blob',
              data: JSON.stringify({
                  pk: {{ object.pk }},
              }),
              success: function (response) {
              }
          }).done(function(response){
                  var newBlob = new Blob([response], {type: "application/xls"});
                  const data = window.URL.createObjectURL(newBlob);
                  var link = document.createElement('a');
                  link.href = data;
                  link.download="sample.xls";
                  link.click();
          })
  }

Оригинальный файл
5bc02f7b3d387983821408.png
Скачиваемый файл
5bc02fa084539906503386.png

Видно что бьются данные. Пока не пойму - на стороне клиента или сервера? И как поправить?
  • Вопрос задан
  • 622 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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