1、下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git)

2、在入口文件中加载OSS

3、config文件配置oss信息(ossKeyId、ossKeySecret、endpoint以上信息开通阿里云oss服务后可获得;bucket是创建的存储目录名)

4、上传base64图片(UploadController.php)

  1. <?php
  2. namespace app\api\controller;
  3. use think\Controller;
  4. use think\Db;
  5. use OSS\OssClient;
  6. use OSS\Core\OssException;
  7. class UploadController extends Controller {
  8. /**
  9. * 上传图片到oss
  10. * @param string $info base64图片
  11. *
  12. */
  13. public function upload_pic(){
  14. $imgData = input('info','');
  15. if($imgData){
  16. $img_len = strlen($imgData);
  17. $imgData = str_replace('\n','',$imgData);
  18. $imgData = str_replace('\r','',$imgData);
  19. $imgData = str_replace('\t','',$imgData);
  20. $imgData = str_replace(PHP_EOL,'',$imgData);
  21. $imgData = str_replace('\\','',$imgData);
  22. $imgData = str_replace(' ','+',$imgData);
  23.  
  24. $host = config('public.host');
  25.  
  26. $date = date('Y-m-d');
  27. $dir = "./public/user/$date";
  28. if (!file_exists($dir)){
  29. mkdir ($dir,0777,true);
  30. }
  31. $img = base64_decode($imgData);
  32. $uniqid_name = md5(uniqid(rand()));
  33. $tmpImg = './public/user/'.$date.'/user_'.$uniqid_name.'.jpg';
  34. $tmpImg1 = '/public/user/'.$date.'/user_'.$uniqid_name.'.jpg';
  35. $a = file_put_contents($tmpImg,$img);//保存图片,返回的是字节数
  36. if($a){
  37. $accessKeyId = config('oss.ossKeyId');
  38. $accessKeySecret = config('oss.ossKeySecret');
  39. // Endpoint以杭州为例,其它Region请按实际情况填写。
  40. $endpoint = config('oss.endpoint');
  41. // 存储空间名称
  42. $bucket= config('oss.bucket');
  43. // 文件名称
  44. $object = 'user/'.$date.'/user_'.$uniqid_name.'.jpg';
  45. // <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt
  46. $filePath = './public/user/'.$date.'/user_'.$uniqid_name.'.jpg';
  47. try{
  48. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  49. $ossClient->uploadFile($bucket, $object, $filePath);
  50. unlink($filePath);
  51. } catch(OssException $e) {
  52. $data=array('code'=>config('code.error'),'msg'=>"上传失败");
  53. return json($data);
  54. }
  55. $img_src = config('oss.host')."/".$object;
  56. $data=array('code'=>config('code.success'),'msg'=>"上传成功",'data'=>$img_src);
  57. return json($data);
  58. }else{
  59. $data=array('code'=>config('code.error'),'msg'=>"上传失败");
  60. return json($data);
  61. }
  62. }else{
  63. $data=array('code'=>config('code.error'),'msg'=>"上传图片不能为空");
  64. return json($data);
  65. }
  66. }
  67. /**
  68. * 删除OSS上的图片
  69. * @param string $info OSS上完整的图片地址
  70. *
  71. */
  72. public function pic_del(){
  73. $info = input('pic_addr','');
  74. if(!empty($info)){
  75. $ex = config('oss.host').'/';
  76. $arr = explode($ex,$info);
  77. $accessKeyId = config('oss.ossKeyId');
  78. $accessKeySecret = config('oss.ossKeySecret');
  79. $endpoint = config('oss.endpoint');
  80. $bucket= config('oss.bucket');
  81. $object = $arr[1];
  82. try{
  83. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
  84. $ossClient->deleteObject($bucket, $object);
  85. } catch(OssException $e) {
  86. printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");
  87. printf($e->getMessage() . "\n");
  88. return;
  89. }
  90. }
  91. $data=array('code'=>config('code.success'),'msg'=>"删除成功");
  92. return json($data);
  93. }
  94. }

ThinkPHP5使用阿里云OSS图片上传的更多相关文章

  1. Thinkphp整合阿里云OSS图片上传实例

    Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...

  2. 阿里云 oss 图片上传解决方案 vue (web直传)

    我们通过aliyun-oss-web这个npm去解决 该文章主要介绍如何获取 imgSignature 和 imgPolicy 这两个参数 首先下载 web直传的案例 : http://files.c ...

  3. file does not exist 阿里云OSS图片上传遇到的问题

    ./uploads\20171209/0497b8dd16e72c6fcf5bfd552f535a81.png file does not exist 原代码 function aliyun($sav ...

  4. 阿里云OSS图片上传类

    1.阿里云基本函数 /** * 把本地变量的内容到文件 * 简单上传,上传指定变量的内存值作为object的内容 */ public function putObject($imgPath,$obje ...

  5. 阿里云OSS图片上传plupload.js结合jq-weui 图片上传的插件

    项目中用到了oss上传,用的plupload,奈何样式上不敢恭维,特别是放在移动端上使用.于是自己把它移植到了jq weui的上传图片组件上. 更改:选择照片后确认即及时上传至oss服务器,不限制上传 ...

  6. 记一次阿里云oss文件上传服务假死

    引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...

  7. 构建基于阿里云OSS文件上传服务

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...

  8. PHP实现阿里云OSS文件上传(支持批量)

    上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下:   1.下载阿里云OSS对象上传SDK(P ...

  9. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

随机推荐

  1. python调用大漠插件教程03窗口绑定实例

    怎样利用注册好的大漠对象来绑定窗口? 直接上代码,根据代码分析 from win32com.client import Dispatch import os from win32gui import ...

  2. 前端基础知识之html和css全解

    前端回顾 目录 前端回顾 基础知识 HTTP协议 认识HTML HTML组成 HTML标签 div和span标签 特殊的属性 常用标签 认识css 选择器 属性 前端就是展示给用户并且与用户进行交互的 ...

  3. 2019-ICLR-DARTS: Differentiable Architecture Search-论文阅读

    DARTS 2019-ICLR-DARTS Differentiable Architecture Search Hanxiao Liu.Karen Simonyan.Yiming Yang GitH ...

  4. Rocket - tilelink - Delayer

    https://mp.weixin.qq.com/s/pc8f_DOJ7w8k8BeM9gPzVw   简单介绍Delayer的实现.   1. 基本介绍   以一定的概率延迟消息的传递.   类参数 ...

  5. Chisel3 - bind - Data

    https://mp.weixin.qq.com/s/ENJVkz88sGgyODRNCu9jhQ   介绍Data类中的binding的定义和用法.   Binding stores informa ...

  6. (Java实现) 子集和问题

    回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯算法解决问题的一般步骤为: 1.定义一个解空间,它包含问题的解 ...

  7. Java实现 计蒜客 拯救行动

    拯救行动 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N \times M (N, M \le 200)N×M(N,M≤200) 的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫( ...

  8. java实现求二十一位水仙花数(21位水仙花数)

    一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...

  9. C++实现车轮轨迹

    标题:车轮轴迹 栋栋每天骑自行车回家需要经过一条狭长的林荫道.道路由于年久失修,变得非常不平整.虽然栋栋每次都很颠簸,但他仍把骑车经过林荫道当成一种乐趣. 由于颠簸,栋栋骑车回家的路径是一条上下起伏的 ...

  10. iOS -iOS9中提示框(UIAlertController)的常见使用

    iOS 8 之前提示框主要使用 UIAlertView和UIActionSheet:iOS 9 将UIAlertView和UIActionSheet合二为一为:UIAlertController . ...