tp5异步上传图片到七牛云,就是那么简单

总结的挺好的,我就直接拿过来了

--------------------------------------------------------------

1. 一个异步上传的插件uploadify

    在html中引入uploadify的js和css文件。 tp5中如

   

    html如下:

[html]  view plain  copy
  1. <p><span style="font-size:24px;"><link rel="stylesheet"type="text/css"href="__STATIC__/admin/uploadify/</span></p><p><span style="font-size:24px;">uploadify.css" /></span></p><p><span style="font-size:24px;">{load href="__STATIC__/admin/uploadify/jquery.uploadify.min.js"}</span></p><div class="row cl">  
  2.       <label class="form-label col-xs-4 col-sm-2">缩略图:</label>  
  3.       <div class="formControls col-xs-8 col-sm-9">  
  4.         <input id="file_upload"  type="file" multiple="true" >  
  5.         <img style="display: none" id="upload_org_code_img" src="" width="150" height="150">  
  6.         <input id="file_upload_image" name="image" type="hidden" multiple="true" value="">  
  7.       </div>  
  8.     </div>  

    javascript调用代码如下:

[javascript]  view plain  copy
  1. <script>  
  2. <span style="white-space:pre">  </span>// 图片上传的一个文件  
  3. <span style="white-space:pre">  </span>swf = "__STATIC__/admin/uploadify/uploadify.swf";  
  4. <span style="white-space:pre">  </span>// 图片上传的接口  
  5. <span style="white-space:pre">  </span>image_upload_url = "{:url('image/upload')}"//自己修改成自己的  
  6. $(function() {  
  7.     $("#file_upload").uploadify({  
  8.         'swf'             : swf,  
  9.         'uploader'        : image_upload_url,  
  10.         'buttonText'      : '图片上传',  
  11.         'fileTypeDesc'    : 'Image files',  
  12.         'fileObjName'     : 'file',  
  13.         'fileTypeExts'    : '*.gif; *.jpg; *.png',  
  14.         'onUploadSuccess' : function(file, data, response) {  
  15.             //console.log(file);  
  16.             //console.log(data);  
  17.             //console.log(response);  
  18.             var obj = JSON.parse(data);  
  19.             //console.log(obj);  
  20.             if(response){  
  21.                 $('#upload_org_code_img').attr('src',obj.data);  
  22.                 $('#file_upload_image').attr('value',obj.data);  
  23.                 $('#upload_org_code_img').show();  
  24.             }  
  25.         }  
  26.     });  
  27. });  


2.用七牛云存储图片封装

   对于qiniu类库的下载,一是通过composer,如果电脑中有composer,安装很快捷,

在项目根目录下php composer.phar require qiniu/php-sdk,或者composer require qiniu/php-sdk等待即可完成。

   对于电脑中没有composer的,可以直接下载提供的符合 Composer 规范的vendor 压缩包并在本地解压。解压后的内容和使用 Composer 方式获取到的内容完全一致,之后的使用方式也一致。

   或者下载源代码sdk包放在vender中,对于tp5在使用时require VENDER_PATH.'php-sdk-7.1.x/autoload.php';也可以放在随意文件目录总,只要引入就行了。

    即可。

    封装的上传类如下:

[php]  view plain  copy
  1. <?php  
  2. namespace app\common\lib;  
  3. // 引入鉴权类  
  4. use Qiniu\Auth;  
  5. // 引入上传类  
  6. use Qiniu\Storage\UploadManager;  
  7. //如果不是使用composer的话就需要require VENDOR_PATH.'qiniu/php-sdk-7.2/autoload.php';   
  8. /** 
  9. * 七牛图片上传基础类库 
  10. */  
  11. class Upload   
  12. {  
  13.       
  14.     public static function image(){  
  15.         if(empty($_FILES['file']['tmp_name'])){  
  16.             exception('你提交的图片数据不合法',404);  
  17.         }  
  18.         // 图片的本地路径  
  19.         $file = $_FILES['file']['tmp_name'];  
  20.         // 换取上传图片的后缀  
  21.         // $ext = explode('.',$_FILES['file']['name'])[1];  
  22.         $pathinfo = pathinfo($_FILES['file']['name']);  
  23.         $ext = $pathinfo['extension'];  
  24.         $config = config('qiniu');  
  25.         // 构建一个鉴权对象  
  26.         $auth = new Auth($config['ak'],$config['sk']);  
  27.         // 生成上传的token  
  28.         $token = $auth->uploadToken($config['bucket']);  
  29.         // 上传到七牛后保存的文件名  
  30.         $key = date('Y').'/'.date('m').'/'.substr(md5($file),0,5).date('YmdHis').mt_rand(0,9999).'.'.$ext;  
  31.   
  32.         // 初始化UploadManager类  
  33.         $uploadMgr = new UploadManager();  
  34.         list($ret,$err) = $uploadMgr->putFile($token,$key,$file);  
  35.         if($err !== null){  
  36.             return null;  
  37.         }else{  
  38.             return $key;  
  39.         }  
  40.     }  
  41. }  

对于调用:(就是那么简单)

[php]  view plain  copy
  1. /** 
  2.      * 七牛图片上传 
  3.      * @return [type] [description] 
  4.      */  
  5.     public function upload(){  
  6.         // 捕获异常  
  7.         try{  
  8.             // 返回qiniu上的文件名  
  9.             $image = Upload::image();  
  10.         }catch(\Exception $e){  
  11.             echo json_encode(['status'=>0,'message'=>$e->getMessage()]);  
  12.         }  
  13.         // 返回给uploadify插件状态  
  14.         if($image){  
  15.             $data = [  
  16.                 'status' => 1,  
  17.                 'message' => 'OK',  
  18.                 'data' => config('qiniu.image_url').'/'.$image,  
  19.             ];  
  20.             echo json_encode($data);exit;       
  21.         }else{  
  22.             echo json_encode(['status'=>0,'message'=>'上传失败']);  
  23.         }  
  24.     }  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值