我有一个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