我尝试使用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。
那么,为什么我无法检索它是否已存在?
答案 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>