Как отправить файл tar из django, чтобы отреагировать на него и загрузить его - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть представление django, которое загружает кучу файлов из корзины s3, а затем архивирует их вместе.Я хотел бы иметь возможность отправить этот tarballed файл на стороне клиента, а затем загрузить его на стороне клиента.

Я пытался открыть его с помощью большого двоичного объекта, но в файле tarball всегда говорится о фатальной ошибке, когда я пытаюсь открыть его.

Сторона Джанго

tar_name = "Inspection{}{}.tar.gz".format(inspection.id,first_file_name)
        tar_path = "{}/{}".format(os.path.join(os.path.expanduser('~'), 'Downloads'), tar_name)

        self.download_tar(files,tar_path)
        tarred = tarfile.open(tar_path,'r:gz')

        response = HttpResponse(tarred,content_type='application/x-gzip')
        response['Content-Disposition'] = "attachment; filename={0}".format('test_worked.tar.gz')
        response['Content-Encoding'] = 'tar'
        return response

Сторона реакции.Мы используем программу с именем transcrypt, которая превращает python в реакцию.


    def download(self,url):
        data = __new__(Blob([url], {type: 'application/x-gzip'}))
        csvURL = window.URL.createObjectURL(data)
        tempLink = document.createElement('a')
        tempLink.href = csvURL
        tempLink.setAttribute('download', 'hello.tar')
        tempLink.click()

Ожидаемый результат: Tarball загружается на стороне клиента.Фактический результат: Tarball загружен на стороне клиента, но не может быть открыт.Говорит An error occurred while loading the archive. Fatal Error

...