onethink上傳圖片(資源)和預覽


直接上干貨 不廢話了

普通上傳:  onthink框架 后台已經有圖片和文件上傳功能

controller里只需:

public function addPicture(){

/* 調用文件上傳組件上傳文件 */

$Picture = D('Picture');

$info = $Picture->upload(

$_FILES, C('PICTURE_UPLOAD'),

C('PICTURE_UPLOAD_DRIVER'),

null  );

//TODO:上傳到遠程服務器

$this->ajaxReturn($info);

}

上傳成功后會返回圖片信息 具體信息可以用dump打印

onthink的后台是支持批量上傳的前台需要修改 我這里由於沒考慮兼容性所以 直接采用的是 js formdata 的方式進行上傳 優點是你可以自己定制上傳按鈕

缺點 進度條之類的要自己寫TAT  一個簡單的例子:

<input type="file" id="uploadImageBack" class="uploadPictureInput" accept="image/gif, image/jpeg,image/png"/>

var fromdata = new FormData();

function uploadPic(id,name)

{

$("#"+id).on("change", function(){

 var files = !!this.files ? this.files : []; 

return if (!files.length || !window.FileReader) return; 

if (/^image/.test( files[0].type)){

 var reader = new FileReader();

reader.readAsDataURL(files[0]);

fromdata.append(name, files[0]);

reader.onloadend = function(){

$("#"+id).parent().parent().find('.upload-img-box').empty();

$("#"+id).parent().parent().find('.upload-img-box').html( '<div class="upload-pre-item"><span class="delPic" key="'+name+'">X</span><img src="' + this.result + '"/></div>' );

} }

});

}

 

 

你可以修改files 為遞增的形式 使之可以實現批量上傳 (注意低版本瀏覽器可能不支持該功能

確保服務器端已經配置好上傳的文件夾還有並且給了文件夾權限

FTP上傳: 首先改一下admin下面的config文件增加 

'PICTURE_UPLOAD_FTP' => array(

'mimes' => '', //允許上傳的文件MiMe類型

'maxSize' => 2*1024*1024, //上傳的文件大小限制 (0-不做限制)

'exts' => 'jpg,gif,png,jpeg', //允許上傳的文件后綴

'autoSub' => true, //自動子目錄保存文件

'subName' => array('date', 'Ymd'), //子目錄創建方式,[0]-函數名,[1]-參數,多個參數使用數組

'rootPath' => false, //保存根路徑 'savePath' => '', //保存路徑

'saveName' =>array('uniqid', ''), //上傳文件命名規則,[0]-函數名,[1]-參數,多個參數使用數組

'saveExt' => '',//文件保存后綴,空則使用原后綴

'replace' => true, //存在同名是否覆蓋

'hash' => true, //是否生成hash編碼

'callback' => false, //檢測文件是否存在回調函數,如果存在返回文件信息數組

),

'PICTURE_UPLOAD_DRIVER_FTP'=>'Ftp',

'PICTURE_UPLOAD_CONFIG' => array(

'host' => '192.168.24.186', //服務器

'port' => 21, //端口

'timeout' => 90, //超時時間

'username' => 'test',

'password' => 'test',

),

然后controller里改為:

public function addPicture(){

/* 返回標准數據 */

$return = array('status' => 1, 'info' => '上傳成功',);

/* 調用文件上傳組件上傳文件 */

$Picture = D('Picture');

$info = $Picture->upload(

$_FILES,

C('PICTURE_UPLOAD_FTP'),

C('PICTURE_UPLOAD_DRIVER_FTP'),

C("PICTURE_UPLOAD_CONFIG") );

//TODO:上傳到遠程服務器 $book = D('Books');

 /* 返回JSON數據 */

$this->ajaxReturn($info);

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM