我在将图片上传到文件夹时遇到错误。上传该图片时出错。 我的控制器代码是(cakeplus是我的根文件夹ex:htpp:// localhost / cakeplus):
$directory = "http://".$_SERVER['HTTP_HOST'].'/cakeplus/pics';
if(!is_dir($directory)) {
mkdir($directory,0777);
}
$files_array = $this->data['Photo']['path'];
//pr($files_array); die;
if(isset($files_array['name']) && $files_array['name']!='') {
$filetype = $files_array['type'];
$filesize = $files_array['size'];
$filename = $files_array['name'];
$filetmpname = $files_array['tmp_name'];
$file_type = explode('.',$filename);
$ext_name = array_reverse($file_type);
$final_file_title = $ext_name[1];
$file_name = Inflector::slug( str_replace( ".".$ext_name[0], "" , $filename ). '_' .time() ,'-' );
$newFileName = $file_name.'.'.$ext_name[0];
move_uploaded_file($filetmpname, $directory.'/'.$newFileName);
$requirementuploadData['Photo']['path'] = $file_name;
$this->Photo->create();
$this->Photo->save($requirementuploadData,false);
}
错误(警告):
Warning (2): move_uploaded_file(http://localhost/cakeplus/pics/wallpaper-1433586197.png): failed to open stream: HTTP wrapper does not support writeable connections [APP\Controller\PhotosController.php, line 31]
Warning (2): move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\phpA80D.tmp' to 'http://localhost/cakeplus/pics/wallpaper-1433586197.png' [APP\Controller\Photos
答案 0 :(得分:1)
查看CakePHP Upload plugin - 它将抽象出处理文件和图像上传的大部分工作。
您看到的错误是因为您无法使用move_uploaded_file()
从文件路径(C:\xampp\tmp\phpA80D.tmp
)转移到HTTP URL(http://localhost/cakeplus/pics/wallpaper-1433586197.png
)。
如果您不想使用上传插件,并希望继续使用您已有的内容,我将首先更改$directory
路径。这样的事情可能更合适:
$directory = WWW_ROOT . 'pics';
这将包含./yourapp/webroot/pics
目录的路径,该目录也是http://yourapp.com/pics
的位置。
查看文档了解更多predefined paths。
答案 1 :(得分:0)
可能是文件夹没有写入图像的权限。 你应该使用cakephp上传组件。
$this->Upload->upload($file,$destination,$name);