Как загрузить несколько файлов с дополнительным полем реагировать на флягу. - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь загрузить файлы вместе с дополнительным полем, используяact.js и python (flask). Пользователь может загрузить несколько файлов. enter image description here

Для большей функциональности я нажимаю Имя и Файл в массиве, и этот массив сохраняется в состоянии компонента, как показано ниже.

this.state = {
   files:[{name:'', file:''}]
}

И ясоздал api rest в колбе для загрузки файлов и сохранения данных. и передача this.state данных как formData(). И я пытаюсь получить загруженные файлы в колбу, как показано ниже.

let formData = this.state; 
    const fd = new FormData(); 
    for(let k in formData){
        fd.append(k,formData[k]);
    };

Rest API-

@mod_upload.route('/upload',methods=['POST'])
def upload():
        if request.method == 'POST': 
                f = request.files['files']
                print(f) 

Все работает нормально, но в приведенном выше коде f всегда пуст, потому что в formData() я добавляю this.state.files, который является массивомно он ожидает файл Object.

Итак, мне нужны предложения, как получить доступ к значению файлов и полей в request.files['files'].

Пожалуйста, помогите мне. Спасибо

Ответы [ 2 ]

4 голосов
/ 30 сентября 2019

Попробуй это. Обратите внимание на клавишу 'files' при добавлении данных формы. Дайте мне знать, если это работает

ОБНОВЛЕНО ANS

let formData = this.state; 
    const fd = new FormData(); 
    for(const k of formData){
        fd.append('files',k.file, k.name);
    };
2 голосов
/ 01 октября 2019

вы не отправляете значение файла, поэтому requests.files['files'] будет пустым.

fd.append("file", files[0]); // replace files[0] with your file
fd.append("name", "tmp");

теперь вы увидите, что requests.files['file'] заполнен вашим файлом, а request.form заполненключ 'name' и его значение.

обратите внимание, что это не имя ключа, которое заполняет requests.files, оно заполняется в зависимости от его значения (это должен быть объект файла)

, который вы можете создатьструктура типа name1 для file1 метаданных и name2 для file2 метаданных.

...