如何从Django发送tar文件以响应客户端并下载

时间:2019-04-08 20:14:56

标签: ajax django reactjs tar

我有一个django视图,该视图从s3存储桶下载一堆文件,然后将它们压缩在一起。我希望能够将压缩文件发送到客户端,然后再在客户端下载。

我一直试图用blob打开它,但是tarball文件总是说我尝试打开它时出现致命错误。

Django端

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变成react。


    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

0 个答案:

没有答案