描述:
本文使用uploadify插件进行批量图片上传
原理:
导入uploadify插件核心代码,配置uploadify接口进行上传。
代码如下(本文使用thinkphp5.0框架作演示):
引入文件:
<script src="__PLUG__/uploadify2/jquery.uploadify.min.js" type="text/javascript"></script> <link rel="stylesheet" type="text/css" href="__PLUG__/uploadify2/uploadify.css">
1,控制器代码
/** * 上传图片 * @return * status 上传状态 1成功0失败 * msg 返回上传消息 * file_id 上传图片文件id * url 上传图片返回路径 */ public function brandUploadify(){ $verifyToken = md5('unique_salt' . $_POST['timestamp']); if (!empty($_FILES) && $_POST['token'] == $verifyToken) { $rs=model('admin/File')->uploadImg('Filedata','admin/goods'); if ($rs['status']==1){ /***************成功返回数据开始**************************/ //返回数据在这里写 /***************成功返回数据结束**************************/ echo $rs['msg']; }else{ echo $rs['msg']; } }else{ echo 'Invalid file type.'; } }
2,模型代码
/** * 上传图片 * @return * status 上传状态 1成功0失败 * msg 返回上传消息 * file_id 上传图片文件id * url 上传图片返回路径 */ public function uploadImg($file='file',$location='admin'){ // 获取表单上传文件 例如上传了001.jpg if (!empty($_FILES[$file]['name'])){ $file = request()->file($file); // 移动到框架应用根目录/public/uploads/ 目录下 $info = $file->validate(['size'=>1024*2*1000,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'uploads'. DS . $location); if($info){ // 成功上传后 获取上传信息 $data['url']='/uploads/'.$location.'/'.str_replace('\\','/',$info->getSaveName()); $data['original']='/uploads/'.$location.'/'.str_replace('\\','/',$info->getSaveName()); $data['ext']=$info->getExtension(); $data['size']=$info->getSize(); $data['create_time']=time(); $rs=Db::name('file')->insertGetId($data); if ($rs>0){ $msg['status']='1'; $msg['msg']='上传成功'; $msg['file_id']=$rs; $msg['url']=$data['url']; return $msg; }else{ $msg['status']='0'; $msg['msg']='上传失败'; return $msg; } }else{ // 上传失败获取错误信息 $msg['status']='0'; $msg['msg']=$file->getError();; return $msg; } } }
3,html代码
<div class="am-form-group"> <label class="am-u-sm-3 am-form-label" > 批量上传 </label> <div class="am-u-sm-3"> <div id="queue"></div> <input id="file_upload" name="file_upload" type="file" multiple="true"> </div> </div>
4,javascript代码
<script type="text/javascript"> <?php $timestamp = time();?> $(function() { $('#file_upload').uploadify({ 'formData' : { 'timestamp' : '<?php echo $timestamp;?>', 'token' : '<?php echo md5('unique_salt' . $timestamp);?>', 'brand_id' : '{$info.id}' }, //是否自动上传 //'auto': false, 'swf' : '__PLUG__/uploadify2/uploadify.swf', 'uploader' : "{:url('kbcms/admin_upload/brandUploadify')}", //开启调试 'debug': false, //是否自动上传 'buttonText': '选择照片', //flash //文件选择后的容器ID //'queueID': 'uploadfileQueue', //'multi': false, 'fileTypeDesc': '支持的格式:', 'fileTypeExts': '*.jpg;*.jpge;*.gif;*.png', //'removeTimeout': 1, //返回一个错误,选择文件的时候触发 'onSelectError': function (file, errorCode, errorMsg) { switch (errorCode) { case -100: alert("上传的文件数量已经超出系统限制的" + $('#file_upload').uploadify('settings', 'queueSizeLimit') + "个文件!"); break; case -110: alert("文件 [" + file.name + "] 大小超出系统限制的" + $('#file_upload').uploadify('settings', 'fileSizeLimit') + "大小!"); break; case -120: alert("文件 [" + file.name + "] 大小异常!"); break; case -130: alert("文件 [" + file.name + "] 类型不正确!"); break; } }, //检测FLASH失败调用 'onFallback': function () { alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。"); }, //上传到服务器,服务器返回相应信息到data里 'onUploadSuccess': function (fileObj, data, response) { str=$.parseJSON(data); html_str="<img src='"+str.url+"' width='80px' height='80px'>"; $('#uploadify_imgs').append(html_str); } }); }); </script>
5,uploadify环境包