我正在用 Python 和 CGI 编写一个小型网站,用户可以在其中上传 zip 文件和下载其他用户上传的文件。目前,我能够正确上传 zip,但在将文件正确发送给用户时遇到了一些麻烦。我的第一种方法是:
file = open('../../data/code/' + filename + '.zip','rb')
print("Content-type: application/octet-stream")
print("Content-Disposition: filename=%s.zip" %(filename))
print(file.read())
file.close()
但很快我意识到我必须将文件作为二进制文件发送,所以我尝试了:
print("Content-type: application/octet-stream")
print("Content-Disposition: filename=%s.zip" %(filename))
print('Content-transfer-encoding: base64\r')
print( base64.b64encode(file.read()).decode(encoding='UTF-8') )
以及它的不同变体。它只是行不通;Apache 引发“来自脚本的格式错误的标头”错误,所以我想我应该以其他方式对文件进行编码。