2012-01-07 3 views
0

사용자 레코드와 관련된 아바타를 업로드하려고하지만 잘 수행 할 방법이 확실하지 않습니다. FileFolderUtility을 사용해야한다고 생각합니다. 그것을 사용해야합니다. 아바타 내가 바로 users 테이블 내부의 avatar 열을 사용하는 것으로 생각 모든 사용자에게 고유하므로 기본 CakePHP 2.0 이미지 업로드

내가, 내 사용자의 아바타의 경로를 삽입해야 내 users데시벨 테이블에 avatar 필드가, 그것은 권리입니다 이미지 용으로 특정 작업을해야합니까?

나는 쓴 적이 있지만 그것은 작동하지 않습니다

:

// in my user edit view where I upload the image (avatar) 
$file = new File ($this->request->data['User']['avatar']); // error here 
$ext = $file->ext(); 
$filename = $this->User->id.$ext; 
$image = $file->read(); 
$file->close(); 
$file = new File (WWW_ROOT.'img/avatar/'.$filename, true, 777); 
$file->write($image); 
$file->close(); 
$this->request->data['User']['avatar'] = $filename; 

이 코드는 내가 $this->request->data['User']['avatar'] 배열을 전달하여 File을 만들 어디를보고 한 첫 번째 행에서 오류를 반환

Warning (2): dirname() expects parameter 1 to be string, array given 
Warning (2): is_dir() expects parameter 1 to be string, array given 
Warning (2): basename() expects parameter 1 to be string, array given 

CakePHP 2.0에 대한 몇 가지 실례가 있습니까?

답변

1

내가 업로드 한 tmp_name을 추가하지 않아서 비슷한 문제가 발생했습니다. 결국 나는 일반 PHP 코드를 선택했다 :

move_uploaded_file ($this->request->data['Model']['picture']['tmp_name'], WWW_ROOT.'/img/pictures/'.$new_file_name.'.jpg'); 
$this->request->data['Model']['picture_path'] = '/img/pictures/'.$new_file_name.'.jpg'; 
$this->Model->save($this->request->data['Model']); 

혹시 플러그인을 사용하고 케이크 파일 기능을 사용하지 않고 위의 문제가 해결 되었습니까? 보고 흥미롭고 유용 할 것입니다.

+0

당신이 작업 예제를 사용 공유 할 수 감사합니다..?) –

+1

그냥 정교하게, 위의 코드는 CakePHP 프레임 워크입니다. 일반적인 PHP에 대한 언급은 move_uploaded_file 명령과 관련이 있습니다. 위의 경우 파일의 임시 위치를 가져 와서 영구 위치로 이동합니다. move_uploaded_file (임시 파일, 영구 파일 위치); 그런 다음 영구 파일 위치를 관련 데이터베이스 필드에 저장하여 나중에 검색하십시오. – alieninlondon

2

나는 CakePHP 2 용 미디어/이미지 업로드 플러그인을 여러 번 사용해 보았습니다. 가장 좋은 CakeMedia (http://grafikart.github.com/CakePHP-Media)를 찾았습니다. Auth 구성 요소가 작동해야한다는 것을 제외하고는 잘 작동합니다.

그것은 너무 TinyMCE에 잘 작동

은 (이미 포함 된 도우미를 통해 당신을 위해 구성

당신이 당신을 도울 수있는 코드를 살펴 보셔야합니다