Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2019, 23:36
Аспирант
Отправить личное сообщение для Ким чен ин Посмотреть профиль Найти все сообщения от Ким чен ин
 
Регистрация: 30.05.2018
Сообщений: 40

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);

то работает, естественно один элемент загружается
Ответить с цитированием
  #2 (permalink)  
Старый 08.01.2019, 02:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

https://developer.mozilla.org/ru/doc...ormData/append
Ответить с цитированием
  #3 (permalink)  
Старый 08.01.2019, 02:56
Аспирант
Отправить личное сообщение для Ким чен ин Посмотреть профиль Найти все сообщения от Ким чен ин
 
Регистрация: 30.05.2018
Сообщений: 40

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

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

Эта техника позволяет упростить мультифайловую загрузку данных потому, что в результате структура данных является более благоприятной для цикла.
Ответить с цитированием
  #4 (permalink)  
Старый 08.01.2019, 03:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Просто уберите третий параметр.
Ответить с цитированием
  #5 (permalink)  
Старый 08.01.2019, 03:18
Аспирант
Отправить личное сообщение для Ким чен ин Посмотреть профиль Найти все сообщения от Ким чен ин
 
Регистрация: 30.05.2018
Сообщений: 40

бесполезно
Изображения:
Тип файла: png fd.png (6.2 Кб, 4 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 08.01.2019, 03:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Что ошибок не показывает? Будет работать, заменить forEach на for или for ... of. Да и какая надобность именно в apend, почему не просто отдать форму FormData() или нет ее?
Ответить с цитированием
  #7 (permalink)  
Старый 08.01.2019, 10:24
Аспирант
Отправить личное сообщение для Ким чен ин Посмотреть профиль Найти все сообщения от Ким чен ин
 
Регистрация: 30.05.2018
Сообщений: 40

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

на входе есть, на выходе шиш
Изображения:
Тип файла: jpg fdd.jpg (15.8 Кб, 8 просмотров)

Последний раз редактировалось Ким чен ин, 08.01.2019 в 10:30.
Ответить с цитированием
  #8 (permalink)  
Старый 08.01.2019, 10:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

На сервере РНР (если судить по ключу передаваемому, то да)?
Ответить с цитированием
  #9 (permalink)  
Старый 08.01.2019, 10:36
Аспирант
Отправить личное сообщение для Ким чен ин Посмотреть профиль Найти все сообщения от Ким чен ин
 
Регистрация: 30.05.2018
Сообщений: 40

Да, back - php front - vue
Ответить с цитированием
  #10 (permalink)  
Старый 08.01.2019, 10:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

<?
    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>


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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Улучшаем работу с FormData Svorg Общие вопросы Javascript 3 20.11.2018 14:37
innerHTML для TR в InternetExplorer не работает? Непонятливый Элементы интерфейса 3 15.10.2012 17:14
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40