gpt4 book ai didi

python - 'utf- 8' codec can' t 解码位置 14 : invalid start byte 中的字节 0x97

转载 作者:行者123 更新时间:2023-12-01 01:30:35 26 4
gpt4 key购买 nike

我想通过单击按钮从我的服务器下载一个目录。该目录应以 zip 格式下载。我正在使用 Django 和 Python。我之前尝试过使用相同的代码,但它是在 Python2 venv 上。 Python3 venv 上的相同代码会给出 utf-8 codec can't Dedecode byte 错误。目录的 zip 已成功创建,但是当我按下网站上的下载按钮时,它会抛出上述错误。

@login_required
def logs_folder_index(request):
user = request.user
if not is_moderator(user):
raise Http404("You are not allowed to see this page.")
else:
if os.path.exists('Experiments.zip'):
os.remove('Experiments.zip')
zipf = zipfile.ZipFile('Experiments.zip','w',zipfile.ZIP_DEFLATED)
path = settings.BASE_DIR + '/experiments/'
zipdir(path,zipf)
zipf.close()
zip_file = open('Experiments.zip','r')
response = HttpResponse(zip_file,
content_type='application/force-download')
response['Content-Disposition'] = 'attachment; filename="{0}"'\
.format(Experiments.zip)
return response

有人可以帮我解决这个问题吗?

最佳答案

您将文件作为文本流读取(因为模式是'r',而不是'rb')。由于 zip 通常不是用 UTF-8(或一般的任何文本编解码器)编码的,因此它最终可能会达到无法解码的字节序列(或将被无意义地解码),因此您应该将其读取为二进制文件:

@login_required
def logs_folder_index(request):
user = request.user
if not is_moderator(user):
raise Http404("You are not allowed to see this page.")
elif os.path.exists('Experiments.zip'):
os.remove('Experiments.zip')
with zipfile.ZipFile('Experiments.zip','w',zipfile.ZIP_DEFLATED) as zipf:
path = settings.BASE_DIR + '/experiments/'
zipdir(path,zipf)
with open('Experiments.zip',<b>'rb'</b>) as stream:
response = HttpResponse(stream, content_type='application/force-download')
response['Content-Disposition'] = 'attachment; filename="Experiments.zip"'
return response

关于python - 'utf- 8' codec can' t 解码位置 14 : invalid start byte 中的字节 0x97,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52913628/

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