ThinkPHP5使用阿里云OSS图片上传
1、下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git)
2、在入口文件中加载OSS
3、config文件配置oss信息(ossKeyId、ossKeySecret、endpoint以上信息开通阿里云oss服务后可获得;bucket是创建的存储目录名)
4、上传base64图片(UploadController.php)
- <?php
- namespace app\api\controller;
- use think\Controller;
- use think\Db;
- use OSS\OssClient;
- use OSS\Core\OssException;
- class UploadController extends Controller {
- /**
- * 上传图片到oss
- * @param string $info base64图片
- *
- */
- public function upload_pic(){
- $imgData = input('info','');
- if($imgData){
- $img_len = strlen($imgData);
- $imgData = str_replace('\n','',$imgData);
- $imgData = str_replace('\r','',$imgData);
- $imgData = str_replace('\t','',$imgData);
- $imgData = str_replace(PHP_EOL,'',$imgData);
- $imgData = str_replace('\\','',$imgData);
- $imgData = str_replace(' ','+',$imgData);
- $host = config('public.host');
- $date = date('Y-m-d');
- $dir = "./public/user/$date";
- if (!file_exists($dir)){
- mkdir ($dir,0777,true);
- }
- $img = base64_decode($imgData);
- $uniqid_name = md5(uniqid(rand()));
- $tmpImg = './public/user/'.$date.'/user_'.$uniqid_name.'.jpg';
- $tmpImg1 = '/public/user/'.$date.'/user_'.$uniqid_name.'.jpg';
- $a = file_put_contents($tmpImg,$img);//保存图片,返回的是字节数
- if($a){
- $accessKeyId = config('oss.ossKeyId');
- $accessKeySecret = config('oss.ossKeySecret');
- // Endpoint以杭州为例,其它Region请按实际情况填写。
- $endpoint = config('oss.endpoint');
- // 存储空间名称
- $bucket= config('oss.bucket');
- // 文件名称
- $object = 'user/'.$date.'/user_'.$uniqid_name.'.jpg';
- // <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt
- $filePath = './public/user/'.$date.'/user_'.$uniqid_name.'.jpg';
- try{
- $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
- $ossClient->uploadFile($bucket, $object, $filePath);
- unlink($filePath);
- } catch(OssException $e) {
- $data=array('code'=>config('code.error'),'msg'=>"上传失败");
- return json($data);
- }
- $img_src = config('oss.host')."/".$object;
- $data=array('code'=>config('code.success'),'msg'=>"上传成功",'data'=>$img_src);
- return json($data);
- }else{
- $data=array('code'=>config('code.error'),'msg'=>"上传失败");
- return json($data);
- }
- }else{
- $data=array('code'=>config('code.error'),'msg'=>"上传图片不能为空");
- return json($data);
- }
- }
- /**
- * 删除OSS上的图片
- * @param string $info OSS上完整的图片地址
- *
- */
- public function pic_del(){
- $info = input('pic_addr','');
- if(!empty($info)){
- $ex = config('oss.host').'/';
- $arr = explode($ex,$info);
- $accessKeyId = config('oss.ossKeyId');
- $accessKeySecret = config('oss.ossKeySecret');
- $endpoint = config('oss.endpoint');
- $bucket= config('oss.bucket');
- $object = $arr[1];
- try{
- $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
- $ossClient->deleteObject($bucket, $object);
- } catch(OssException $e) {
- printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");
- printf($e->getMessage() . "\n");
- return;
- }
- }
- $data=array('code'=>config('code.success'),'msg'=>"删除成功");
- return json($data);
- }
- }
ThinkPHP5使用阿里云OSS图片上传的更多相关文章
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
- 阿里云 oss 图片上传解决方案 vue (web直传)
我们通过aliyun-oss-web这个npm去解决 该文章主要介绍如何获取 imgSignature 和 imgPolicy 这两个参数 首先下载 web直传的案例 : http://files.c ...
- file does not exist 阿里云OSS图片上传遇到的问题
./uploads\20171209/0497b8dd16e72c6fcf5bfd552f535a81.png file does not exist 原代码 function aliyun($sav ...
- 阿里云OSS图片上传类
1.阿里云基本函数 /** * 把本地变量的内容到文件 * 简单上传,上传指定变量的内存值作为object的内容 */ public function putObject($imgPath,$obje ...
- 阿里云OSS图片上传plupload.js结合jq-weui 图片上传的插件
项目中用到了oss上传,用的plupload,奈何样式上不敢恭维,特别是放在移动端上使用.于是自己把它移植到了jq weui的上传图片组件上. 更改:选择照片后确认即及时上传至oss服务器,不限制上传 ...
- 记一次阿里云oss文件上传服务假死
引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...
- 构建基于阿里云OSS文件上传服务
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...
- PHP实现阿里云OSS文件上传(支持批量)
上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(P ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...
随机推荐
- python调用大漠插件教程03窗口绑定实例
怎样利用注册好的大漠对象来绑定窗口? 直接上代码,根据代码分析 from win32com.client import Dispatch import os from win32gui import ...
- 前端基础知识之html和css全解
前端回顾 目录 前端回顾 基础知识 HTTP协议 认识HTML HTML组成 HTML标签 div和span标签 特殊的属性 常用标签 认识css 选择器 属性 前端就是展示给用户并且与用户进行交互的 ...
- 2019-ICLR-DARTS: Differentiable Architecture Search-论文阅读
DARTS 2019-ICLR-DARTS Differentiable Architecture Search Hanxiao Liu.Karen Simonyan.Yiming Yang GitH ...
- Rocket - tilelink - Delayer
https://mp.weixin.qq.com/s/pc8f_DOJ7w8k8BeM9gPzVw 简单介绍Delayer的实现. 1. 基本介绍 以一定的概率延迟消息的传递. 类参数 ...
- Chisel3 - bind - Data
https://mp.weixin.qq.com/s/ENJVkz88sGgyODRNCu9jhQ 介绍Data类中的binding的定义和用法. Binding stores informa ...
- (Java实现) 子集和问题
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯算法解决问题的一般步骤为: 1.定义一个解空间,它包含问题的解 ...
- Java实现 计蒜客 拯救行动
拯救行动 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N \times M (N, M \le 200)N×M(N,M≤200) 的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫( ...
- java实现求二十一位水仙花数(21位水仙花数)
一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...
- C++实现车轮轨迹
标题:车轮轴迹 栋栋每天骑自行车回家需要经过一条狭长的林荫道.道路由于年久失修,变得非常不平整.虽然栋栋每次都很颠簸,但他仍把骑车经过林荫道当成一种乐趣. 由于颠簸,栋栋骑车回家的路径是一条上下起伏的 ...
- iOS -iOS9中提示框(UIAlertController)的常见使用
iOS 8 之前提示框主要使用 UIAlertView和UIActionSheet:iOS 9 将UIAlertView和UIActionSheet合二为一为:UIAlertController . ...