2012-03-01 6 views
1

현재 Miles J 플러그인을 사용하려고합니다. http://milesj.me/code/cakephp/uploader CakePhp를 배우는 데 많은 진전이 있었지만, 현재 플러그인을 사용하는 데 문제가 있습니다. 제공되는 도움에 감사드립니다.Miles J 업 로더 플러그인을 사용하는 Cakephp 오류

나는 플러그인을 사용하는 데 필요한 모든 단계를 수행했습니다. Plugin 폴더에 내려받은 CakePlugin :: loadAll()으로 부트 스트랩했습니다.

지금까지 그렇게 좋았습니다.

다음으로 플러그인 개발자가 지정한대로 테이블을 설정합니다.

이제 다시 내 자신의 코드입니다. 다음과 같은 설정을했습니다 :

images_controller.php, image.php 및 해당보기.

내 목표는 지금과 같은 해당 파일 내부의 플러그인을 사용하는 것입니다

이제
App::import('Vendor', 'Uploader.Uploader'); 

Class ImagesController extends AppController { 

    var $components = array('Auth'); 
    var $helpers = array('Design'); 
    var $uses = array('Image', 'Uploader.Upload'); 

    function manage(){ 
     //here I show a simple upload form that uses the action saveimage 
    } 

    function saveimage(){ 

      $this->Uploader = new Uploader(); 
      if(!empty($this->data)){ 
       $this->Upload->save($this->data); 
      } 


    } 



} 

, 내 모델이 설정되어 테스트 목적으로 내 모델에

Class Image extends AppModel { 

     public $useTable = 'uploads'; 
     public $actsAs = array(
     'Uploader.FileValidation' => array(
      'file' => array(
       'extension' => array(
        'value' => array('gif', 'jpg', 'jpeg'), 
        'error' => 'Only gif, jpg and jpeg images are allowed!' 
       ), 
       'minWidth' => 500, 
       'minHeight' => 500, 
       'required' => true 
      ), 
      'import' => array(
       'required' => false 
      ) 
     ), 
     'Uploader.Attachment' => array(
      'file' => array(
       'name' => 'uploaderFilename', 
       'uploadDir' => '/files/uploads/', 
       'dbColumn' => 'path', 
       'maxNameLength' => 30, 
       'overwrite' => true, 
       'stopSave' => false, 
       'transforms' => array(
        // Save additional images in the databases after transforming 
        array(
         'method' => 'resize', 
         'width' => 100, 
         'height' => 100, 
         'dbColumn' => 'path_alt' 
        ) 
       ), 
       'metaColumns' => array(
        'size' => 'filesize', // The size value will be saved to the filesize column 
        'type' => 'type'  // And the same for the mimetype 
       ) 
      ), 
      'import' => array(
       'uploadDir' => '/files/uploads/', 
       'name' => 'uploaderFilename', 
       'dbColumn' => 'path', 
       'overwrite' => true, 
       'stopSave' => false, 
       'transforms' => array(
        array(
         'method' => 'scale', 
         'percent' => .5, 
         'dbColumn' => 'path' // Overwrite the original image 
        ) 
       ) 
      ) 
     ) 
    ); 


} 

} 

을 다음과 같이 내가하지 않은 아무것도 변경하지 않았지만 플러그인의 기능을 보여주기위한 플러그인 내부의 Test/Model 폴더에 표시된 것과 동일한 배열을 복사하여 붙여 넣었습니다.

내 파일이 웹 루트/파일에 업로드되지 않는

/업로드 내 데이터가 아니라 완전한에서, 데이터베이스에 삽입되고 폴더 :

다음과 혼란, 오류 또는 이해의 부족이 일어나고있다 방식으로 비워두면 다음과 같이 비워 둡니다.

id | caption | path | path_alt | created | 
4 |   |  |   |2012:02:..| 

위의 경로는 저장 될 것으로 예상되지만 그렇지 않습니다.

필자의 혼란은 주로 플러그인을 사용하는 나의 경험이 없다는 것을 인정해야한다. 그래서 내 모델이나 구성과 관련하여 뭔가 잘못하고있을 수도 있다는 것을 알고있다.

아무런 성과없이 혼자서이 작업을 해보려고하면 어떤 도움이 될지 크게 알 수 있습니다.

+0

: '1054 알 수없는 열 : 오류 : SQLSTATE [42S22] : 찾을 수없는 열

각각의 옵션이 무엇을하는지에 대한 자세한 내용은

, 다음을 확인 배열 '필드 목록' SQL 쿼리 : INSERT INTO'업로드 '(경로, 생성됨) VALUES (배열,'2012-03-01 03:38:14 ') 알림 : 이 오류 메시지는 app \ View \ Errors \ pdo_error.ctp를 만듭니다. –

답변

6

몇 가지 :

1 - 컨트롤러에서 당신은 업 로더 클래스를 가져올 필요가 없습니다. 또한 Uploader.Upload 모델을 사용할 필요가 없습니다 (단지 예제 테스트 케이스 일뿐입니다). 컨트롤러에서해야 할 일은 $ this-> Image-> save()를 호출하여 파일을 업로드하고 경로를 데이터베이스에 행으로 저장하는 것입니다 (이미지에서 첨부 파일을 정의한 경우).

2 -보기에서 파일 입력을 만듭니다. 입력 이름에주의하십시오.

echo $this->Form->input('FILE_INPUT_NAME', array('type' => 'file')); 

3 - 당신의 이미지 모델을 설정 AttachmentBehavior 및 특정 입력 필드에 대한 옵션에서는 :

'Uploader.Attachment' => array(
    'FILE_INPUT_NAME' => array(
     'uploadDir' => '/files/uploads/', 
     'dbColumn' => 'path' 
    ), 
    'ANOTHER_INPUT' => array() 
); 

열 "경로"이미지 테이블에 있는지 확인하십시오. 그리고 그게 다야.모델을 저장하려고 할 때 나는이 메시지를받을 http://milesj.me/code/cakephp/uploader#uploading-files-through-the-model

+0

안녕하세요, 고마워요,이 모든 것을 명확히합니다!. –

+0

이봐, 내가 말한대로 모든 것을 설정해 놓았다 ... 데이터베이스에 새 행을 추가했지만 대상 디렉토리에서 이미지를 찾을 수 없습니다 ... pls help .. –