直接上干貨 不廢話了
普通上傳: 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);
}