Описание проблемы
В настоящее время у меня возникают проблемы с загрузкой больших файлов (размером до нескольких гигабайт) на мой флеш-сервер со страницы веб-интерфейса. Возможное решение, которое я нашел, - это загрузка через request.stream
. Вот пример кода, который я нашел в [1] :
# Upload file as stream to a file.
@app.route("/upload", methods=["POST"])
def upload():
with open("/tmp/output_file", "bw") as f:
chunk_size = 4096
while True:
chunk = request.stream.read(chunk_size)
if len(chunk) == 0:
return
f.write(chunk)
Код работает, когда я использую следующую команду curl:
curl -X POST -T 'sample.zip' 'http://localhost/upload'
но с этим не работает:
curl -X POST -F 'file=@sample.zip' 'http://localhost/upload'
Кроме того, я хотел бы загрузить файлы из веб-интерфейса, официальный учебник содержит следующий пример [2] :
<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form method=post enctype=multipart/form-data>
<input type=file name=file>
<input type=submit value=Upload>
</form>
Но я думаю (и проверял), что приведенный выше код не соответствует моим требованиям по загрузке файла большого размера через request.stream
. Есть ли какие-либо предложения или какие-либо другие обходные пути? Заранее спасибо!
Ссылки
- Потоковая передача файлов Flask
- Flask - загрузка файлов