2014-03-05 4 views
-1

здесь логика загрузки в JShtml5 загрузить несколько файлов с яваскрипта

var upload = function(){ 

    if(_file.files.length === 0){ 
     return; 
    } 

    var data = new FormData(); 
    data.append('SelectedFile', _file.files[0]); 

    var request = new XMLHttpRequest(); 
    request.onreadystatechange = function(){ 
     if(request.readyState == 4){ 
      try { 
       var resp = JSON.parse(request.response); 
      } catch (e){ 
       var resp = { 
        status: 'error', 
        data: 'Unknown error occurred: [' + request.responseText + ']' 
       }; 
      } 
      console.log(resp.status + ': ' + resp.data); 
     } 
    }; 

    request.upload.addEventListener('progress', function(e){ 
     _progress.style.width = Math.ceil(e.loaded/e.total) * 100 + '%'; 
    }, false); 

    request.open('POST', 'upload.php'); 
    request.send(data); 
} 

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

ответ

1

Это потому, что вы только добавление первого файла на объект данных:

data.append('SelectedFile', _file.files[0]); 

Вы должны добавить все файлы в _file.files коллекции Что-то вроде:

for(var i = 0 ; i < _file.files.length; i++) { 
    data.append('SelectedFile'+i, _file.files[i]); 
} 
+0

следующий, как изменить размер? Я не понимаю код здесь http://stackoverflow.com/questions/10333971/html5-pre-resize-images-before-uploading – user3346088

+0

Здесь все объяснено: http://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/После изменения размера изображения с помощью объекта canvas вы можете получить его с помощью canvas.toDataURL(). Если вам нужна дополнительная информация, вам нужно создать отдельный поток на SO для этого, я думаю, –

-1
var data = new FormData(); 
data.append('SelectedFile', _file.files[0]); 

Вместо этого кода попробуйте что-то вроде этого:

var data = new FormData(); 
for (var i in _file.files) data.append('SelectedFile'+i, _file.files[i]); 
+2

, это точно так же, как я сказал ... –

Смежные вопросы