Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   formData не работает multiple values (https://javascript.ru/forum/misc/76389-formdata-ne-rabotaet-multiple-values.html)

Ким чен ин 07.01.2019 23:36

formData не работает multiple values
 
Подскажите, никак не пойму почему не работает multiple values
const formData = new FormData();
                this.files.forEach(file => {
                    formData.append('images[]', file, file.name);
                });
                console.log(formData.getAll('images'))

показывает пустой массив
если убрать квадратные скобки
formData.append('images', file, file.name);

то работает, естественно один элемент загружается

laimas 08.01.2019 02:21

https://developer.mozilla.org/ru/doc...ormData/append

Ким чен ин 08.01.2019 02:56

я вроде так и делаю
Цитата:

Также вы можете использовать обозначения массива для первого аргумента:

formData.append('userpic[]', myFileInput1.files[0], 'chris1.jpg');
formData.append('userpic[]', myFileInput2.files[0], 'chris2.jpg');

Эта техника позволяет упростить мультифайловую загрузку данных потому, что в результате структура данных является более благоприятной для цикла.

laimas 08.01.2019 03:03

Просто уберите третий параметр.

Ким чен ин 08.01.2019 03:18

Вложений: 1
бесполезно

laimas 08.01.2019 03:48

Что ошибок не показывает? Будет работать, заменить forEach на for или for ... of. Да и какая надобность именно в apend, почему не просто отдать форму FormData() или нет ее?

Ким чен ин 08.01.2019 10:24

Вложений: 1
В том то и дело, никаких ошибок, все чисто. Формы нету, просто инпут. Поменял на for
for(let file of this.files){
                    console.log(file)
                    formData.append('images[]',file);
                }
                console.log(formData.getAll('images'))

на входе есть, на выходе шиш

laimas 08.01.2019 10:29

На сервере РНР (если судить по ключу передаваемому, то да)?

Ким чен ин 08.01.2019 10:36

Да, back - php front - vue

laimas 08.01.2019 10:51

Тогда сохранить под любым именем и запустить:

<?
    if($_FILES) exit(print_r($_FILES, 1))
?>
<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html" />
<script type="text/javascript">
function send(f) {
    var xhr = new XMLHttpRequest(),
        data = new FormData();
        
    for(var i of f.files) data.append('images[]', i); //проблемы с поддержкой
        
    xhr.open('POST', location);
        
    xhr.onload = function() {
        if (xhr.status == 200) {
            alert(xhr.responseText)
        }    
    }
    
    xhr.send(data); 
}
</script>
</head>
<body>
<input type="file" onchange="send(this)" multiple="" />
</body>
</html>


Возвращает сервер информацию о загруженном? Следовательно у вас есть нечто с чем нужно разбираться.


Часовой пояс GMT +3, время: 13:09.