上传后,图片字段的print_r
输出如下
Array
(
[name] => foo.png
[type] => image/png
[tmp_name] => /tmp/php63EvNo
[error] => 0
[size] => 19115
)
由于error
为零,filesize
非零,我认为上传成功。
后续调用移动上传文件失败:move_uploaded_file(...): failed to open stream: Permission denied
检查/tmp
后,tmp_name
中指定的文件不存在。
导致此行为的原因/如何纠正?
谢谢!
额外信息: LAMP堆栈,运行PHP5,CakePHP 2.0
表格: php /蛋糕代码:
echo $form->input('Foo.image', array('type' => 'file'));
呈现的html:
<input type="file" name="data[Foo][image]" id="FooImage"/>
答案 0 :(得分:1)
/tmp
中的临时上传文件会在请求结束时被删除 - 它们不会长期保留。如果您关心文件,则必须在收到上传的请求期间使用move_uploaded_file
。
答案 1 :(得分:0)
很可能是权限问题。还要考虑使用cakePHP文件夹变量。我的上传组件如下所示:
$file = $this->request->data['Client']['image'];
$filename = $file['tmp_name'];
$filePath = WWW_ROOT . DS . 'files' . DS . $file['name'];
if(move_uploaded_file($filename, $filePath))
return '/files/'.$file['name']; // saves location of uploaded file