Я кодирую небольшой веб-сайт с 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 вызывает ошибку «неверный заголовок из сценария», поэтому я думаю, что мне следует кодировать файл каким-то другим способом.