在Slim 2中上传文件

时间:2016-09-20 05:11:05

标签: php jquery slim

我尝试使用Slim 2上传文件。但我因为如何访问$ _FILES []参数而迷失了方向。

我从JQuery对index.php进行了以下AJAX调用。

 $("form[name='photo_upload']").on('submit',(function() {
    var location='{{site.uri.image}}/profile/{{bio.user_id}}';
    var fd=new FormData(this);
    fd.append('id',{{bio.user_id}});
    fd.append('loc',location);
    $.ajax({
        'url': '{{site.uri.public}}/bio?id={{user.id}}&action=update',
        'type': "POST",
        'data': fd,                
        'cache': false,
        'processData': false,
        'success': function(data){
            var new_loc='{{site.uri.image}}/profile/'+data['photo_loc'];
            $("#frame").attr("src",new_loc);
            $('.editbox.'+cls).addClass("hidden");
        }
    });
}));

现在我使用Slim 2在index.php中使用以下函数拾取请求。

$app->post('/bio/?', function () use ($app) {    

        $id=$app->request->params('id');
        $loc=$app->request->params('loc');
        $file = $_FILES['image'];
        $controller = new TE\UserController($app);
        $controller->updateUserPhoto($id, $file, $loc);
        $ret=$controller->getUserBio($id, 'photo');
        error_log($ret);
        echo json_encode(array('photo_loc' => $ret));      
});

并收到以下错误

Undefined index: image

在包含

的行
$file = $_FILES['image'];

上面的代码。

我真的很感激你的帮助。

修改

我在var_dump [$ _ FILES]时得到以下内容。

array(1) { ["image"]=> array(5) { ["name"]=> string(8) "1a_1.PNG" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(24) "C:\xampp\tmp\php585C.tmp" ["error"]=> int(0) ["size"]=> int(19762) } }

似乎$ _FILES [' image']并且所有文件信息都在那里。

我甚至做过

isset($_FILES['image'])

检查,甚至返回true。

那么,为什么我无法检索它是否已存在?

1 个答案:

答案 0 :(得分:0)

<pre>
//Jquery code to upload file 
var data = new FormData();
jQuery.each(jQuery('#file')[0].files, function(i, file) {
    data.append('file-'+i, file);
});

You may now retrieve the file in PHP / Slim PHP Framework using:

$_FILES['file-0']


</pre>

参考:Sending multipart/formdata with jQuery.ajax