Преобразовать строку из flask request.get_data в файл - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над приложением с Flask + React. Он отправляет файлы в mulitpart/form-data от реакции на flask. Затем flask обрабатывает файл и сохраняет.

Но по какой-то причине файл обрабатывается неправильно, request.files, request.data, request.form все возвращают пустое содержимое, только request.get_data() показывает правильное содержимое, которое отправлено по реакции. Как я могу сохранить содержимое в get_data в файл? В настоящее время он отображается в строке

frontend:

const formData = new FormData();
formData.append("file", file);
const xhr = new XMLHttpRequest(); 
xhr.open("POST", uploadUrl);
xhr.setRequestHeader("Content-Type", "multipart/form-data"); 
xhr.send(formData);

backend:

@APP.route('/upload/<name>', methods=['POST'])
def collection_upload(name):
    request.get_data(parse_form_data=False)
    # process file 

Но результат не такой, как ожидалось: частичный результат request.headers

Content-Type: multipart/form-data

request.data результат из request.get_data(parse_form_data=False)

------WebKitFormBoundary7C9BrRB0MEmNZdXf
Content-Disposition: form-data; name="file"; filename="text.txt"
Content-Type: text/plain

test

------WebKitFormBoundary7C9BrRB0MEmNZdXf--

в текстовом файле только в примере, предназначенном для загрузки фото / видео, если файл в формате jpg, содержимое будет gibberi sh.

Если я изменю parse_form_data=True, то request.data станет пустым, кажется, что загруженный контент фактически не находится в данных формы. И я могу получить get_data только в строковом формате. Любое предложение о том, как лучше конвертировать данные в файл в flask?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...