首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个文件上传仅添加一个文件

多个文件上传仅添加一个文件
EN

Stack Overflow用户
提问于 2014-05-07 21:04:26
回答 1查看 94关注 0票数 0

我试图用php实现多个文件/图像上传,但我得到的只是上传文件夹中的一个文件,表单是通过ajax发送的。这是我的代码:

代码语言:javascript
复制
<input type='file' id='_file' multiple="multiple" name="SelectedFile[]"> 
<input type='button' id='_submit' value='Upload!'>

和PHP

代码语言:javascript
复制
<?php
// Output JSON
function outputJSON($msg, $status = 'error'){
    header('Content-Type: application/json');
    die(json_encode(array(
        'data' => $msg,
        'status' => $status
    )));
}

$count = 0;

...

// Success!
foreach ($_FILES['SelectedFile']['name'] as $f => $name) {
    outputJSON('File uploaded successfully to "' . 'upload/' . $_FILES['SelectedFile']['name'][0] . '".', 'success');
    $count ++;
}

JS

代码语言:javascript
复制
    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);

我还有Unknown error occurred: []

EN

回答 1

Stack Overflow用户

发布于 2014-05-07 21:07:09

outputJSON函数中删除die调用并改用echo,它将在foreach的第一个循环中终止脚本。

更新:

假设文件已正确上传并存储在$_FILES数组中,则此代码输出应可由js解析:

代码语言:javascript
复制
header('Content-Type: application/json');
$output = array();
foreach ($_FILES['SelectedFile'] as $f => $file) {
    $output []= array(
       'data' => 'File uploaded successfully to "' . 'upload/' . $file['name'],
       'status' => 'success',
    );
}
echo json_encode($output);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23518664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档