gpt4 book ai didi

Python zipfile 未交付给用户

转载 作者:太空宇宙 更新时间:2023-11-04 05:49:26 25 4
gpt4 key购买 nike

更新:我得到了要创建的 zip 文件,但响应仍然无法正常工作。这是更新后的代码。

def index(request):
if request.is_ajax():
uploaded = request.body
newstring = "{\"testdata\": [" + uploaded + "]}"
data = json.loads(newstring)
num_lines = sum(len(v) for v in data.itervalues())
testing(data, num_lines)

zip_subdir = 'testapi'
zip_filename = '%s.zip' % zip_subdir

zf = z.ZipFile(zip_filename, mode='w')
zf.write('Test.xlsx')
zf.close()

zip_file = open(zip_filename, 'r')
response = HttpResponse(zip_file, content_type='application/x-zip-compressed')
response['Content-Disposition'] = 'attachment; filename=%s' % zip_filename
return response

为了确定,我删除了 zip 文件和 Excel 电子表格,运行程序后,两者都已正确创建。 Excel 电子表格中填充了数据,并将其副本放入生成的 zip 存档中。但是,它仍然没有发送给用户。知道响应可能出了什么问题吗?未显示任何错误,但未传送 zip 文件。

下面是原始问题。


我正在尝试让我的 Django 应用程序将文件写入 zip 并将它们发送给用户。这是我认为的代码的一部分:

def index(request):
if request.is_ajax():
uploaded = request.body
newstring = "{\"testdata\": [" + uploaded + "]}"
data = json.loads(newstring)
num_lines = sum(len(v) for v in data.itervalues())
testing(data, num_lines)

zip_subdir = 'testapi'
zip_filename = '%s.zip' % zip_subdir

s = StringIO.StringIO()
zf = z.ZipFile(s, 'w')
zf.write('Test.xlsx')
zf.close()

response = HttpResponse(s.getvalue(), content_type='application/x-zip-compressed')
response['Content-Disposition'] = 'attachment; filename=%s' % zip_filename
return response

本质上,用户按下按钮,发出 ajax 请求以从外部 API 获取 JSON,然后将此 JSON 数据发送到服务器并放入 Excel 电子表格(称为“Test.xlsx”)。所有这些都正常工作。

问题在于未正确创建 zip 存档(“testapi.zip”)。奇怪的是,当用户通过表单(而不是使用 API)上传 JSON 转储时,它与我之前使用的代码相同,并且它之前有效。但是,现在它不会创建 zip 文件。此外,即使我手动将名为“testapi.zip”的 zip 文件放在正确的目录中,响应也不起作用(同样,这以前可以工作 - 在这个应用程序的先前版本中,zip 文件被发送到用户并自动下载)。没有错误返回,但什么也没有发生。

知道会发生什么吗?

最佳答案

问题似乎出在下面的代码中——

s = StringIO.StringIO()
zf = z.ZipFile(s, 'w')

您似乎在 buffer 中打开一个 zip 文件,而不是在名称来自 zip_filename 的位置创建一个 zip 文件。

尝试使用文件的路径/名称打开文件,而不是使用 StringIO.StringIO() 。像这样 -

zf = z.ZipFile(zip_filename,'w')

编辑:

尝试使用绝对路径而不是相对路径。喜欢 -

zip_subdir = '/path/to/zip/file/testapi'

关于Python zipfile 未交付给用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com