2015-06-06 2 views
1

Я получаю ошибку при загрузке изображения в папку. во время загрузки этого изображения произошла ошибка. мой контроллер кодекс (cakeplus мой корневой папке например: htpp: // локальный/cakeplus):Загрузка изображения в CakePHP на localhost

$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

Как и ошибка, вы не можете писать в потоке HTTP. Вам нужно записать файл в файловую систему или использовать какой-либо другой метод, чтобы переместить его в другое место, если это то, что вам нужно сделать. – Clive

ответ

1

Посмотрите в CakePHP Upload plugin - это будет абстрагировать большую часть работы, которая идет в деле с загрузкой файлов и изображений.

Ошибка, которую вы видите, заключается в том, что вы не можете использовать move_uploaded_file() для перехода с пути к файлу (C:\xampp\tmp\phpA80D.tmp) на URL-адрес HTTP (http://localhost/cakeplus/pics/wallpaper-1433586197.png).

Если вы не хотите использовать плагин Upload и предпочитаете работать с тем, что у вас уже есть, я бы начал с изменения пути $directory. Нечто подобное могло бы быть более подходящим:

$directory = WWW_ROOT . 'pics'; 

Это будет содержать путь к каталогу ./yourapp/webroot/pics, который также является расположение http://yourapp.com/pics.

Ознакомьтесь с документацией для более predefined paths.

+1

$ directory = WWW_ROOT. «фото»; это работы :) –

0

может быть папка не имеют разрешения для записи изображения. вы должны использовать компонент загрузки cakephp.

$this->Upload->upload($file,$destination,$name); 
+0

не нужно использовать «http: //». $ _ SERVER ['HTTP_HOST'] в $ directory just используйте путь к папке. – Aabid

Смежные вопросы