fengbingzi
懒癌患者

直接上干货 不废话了

普通上传:  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);

}

posted on 2016-12-05 08:42  fengbingzi  阅读(2527)  评论(0编辑  收藏  举报