이 기사의 예에서는 ThinkPHP를 캡슐화하고 참조용으로 모든 사람과 공유하는 파일 업로드 방법을 설명합니다. 세부 내용은 다음과 같습니다.
요즘 WBlog의 업로드 기능이 최적화되었습니다. 향상된 업로드 기능은 썸네일 업로드, 사진 업로드, 워터마크 생성, 파일 업로드를 구현할 수 있으며, 업로드된 첨부파일의 크기(파일 크기), 유형(파일 형식), 워터마크(사진의 경우)를 백그라운드에서 설정할 수 있습니다. 또한, 업로드된 파일을 해당 폴더에 분류하여 저장할 수 있어 관리가 용이합니다.
다음은 향상된 업로드 기능에 대한 간략한 설명입니다.
썸네일 업로드
기존 썸네일 업로드 기능은 KindEditor의 업로드 구성요소를 사용했습니다. 업로드하기 전에 이미지를 썸네일로 만들지 않으면 원본 이미지가 업로드됩니다. 원본 이미지를 업로드하면 설정된 크기의 이미지가 생성되며 원본 이미지는 자동으로 삭제되므로 스팸 축적을 효과적으로 줄일 수 있습니다. 업로드된 썸네일은 자동으로 Thumb 폴더에 저장됩니다
이미지 업로드
사진을 업로드하면 사진 크기, 업로드된 사진 유형을 설정하고 필요에 따라 워터마크를 추가할 수 있습니다.
파일 업로드
압축파일, 문서파일 등 필요에 따라 업로드 파일 형식과 크기를 추가할 수 있습니다.
워터마크 추가
업로드된 이미지에 워터마크를 추가하세요.
위의 업로드 기능을 모델 클래스 AttachModel.class.php에 캡슐화하고 이를 수행하기 위해 두 가지 방법을 사용했습니다.
/**
* 첨부파일 업로드 : 이미지, 썸네일, 파일 업로드
* @param string $model 업로드가 위치한 모듈 *
* @param bool $type 업로드된 파일 유형: 이미지(picture); 썸네일(thumbnail) 파일(file)
*/
~
공개 함수 업로드($model = null, $type = 'image'){
//업로드 클래스 가져오기
import('ORG.NET.UploadFile');
$upload = new UploadFile();
$upload->saveRule = 'uniqid'; //업로드 파일 규칙 설정
>
>
if ($model){
$upload->savePath = './Public/Uploads/'.$model.'/';
If (!file_exists($upload->savePath)) {
mkdir($upload->savePath);
~
~
$upload->savePath = './Public/Uploads/Thumb/';
If (!file_exists($upload->savePath)) {
mkdir($upload->savePath);
~
if (in_array($type,array('image','thumb'))){
$upload->thumb = true;
$upload->thumbRemoveOrigin = true;// //원본 이미지 삭제
$upload->thumbPrefix = 'wb_';
$upload->thumbMaxWidth = $type=='thumb' ? C('THUMB_W') :C('IMAGE_W');//썸네일 너비
$upload->thumbMaxHeight = $type=='thumb' ? C('THUMB_H') :C('IMAGE_H');//썸네일 높이
~
If (!$upload->upload()) {
$upload->getErrorMsg() 반환;
~
$uploadlist = $upload->getUploadFileInfo();
If(C('ISWATER') && $type=='이미지'){
가져오기('ORG.Util.Image');
//m_thumbnail에 워터마크 추가 Image::water('원본 파일 이름', '워터마크 이미지 주소') foreach($uploadlist를 $key => $value로){
Image::water($value['savepath'] . 'wb_' . $value['savename'], './Public/admin/images/water.png');
~
~
if (in_array($type,array('image','file'))){
return $this->_add($uploadlist,$model);
~
$uploadlist[0]['savename']을 반환합니다.//썸네일 저장 이름을 반환합니다.
~
}
/*
* 업로드된 첨부파일은 첨부에 필요한 데이터에 통합되어 테이블에 저장되고 배열로 반환됩니다
.
* */
개인 함수 _add($uploadlist,$module=''){
//$j = count($uploadlist);
$v = 배열();
foreach($uploadlist를 $key => $value로){
~
~ ~
~
~
~
>
~
~
> ~
~
$this->add($v[$key]);
> >
~
~
~
$v[$key]['id'] = M('Attach')->getLastInsID();
$v 반환;
}
이 글이 모든 분들의 ThinkPHP 프레임워크 프로그래밍에 도움이 되기를 바랍니다.