html5使用javascript上传多个文件

时间:2014-03-05 07:13:24

标签: javascript html5

这是js中的上传逻辑

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

每次用户选择时都会运行该功能,但如果用户选择了多个文件,我只会得到第一个文件。

2 个答案:

答案 0 :(得分: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]);
}

答案 1 :(得分:-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]);