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图片上传的更多相关文章

  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. .NET编程5月小结 - Blazor, Unity, Dependency Injection

    本文是我在5月份看到的一些有趣的内容的集合.在这里你可以找到许多有关Blazor.ASPNET Core的学习资源和示例项目,有关在Unity中使用Zenject进行单元测试的博客,有关Unity项目 ...

  2. Rocket - jtag - JtagShifter

    https://mp.weixin.qq.com/s/pHtrlmSCPqzlDdfj3qkNPQ 简单介绍JtagShifter的实现. 1. 简单介绍 实现移位寄存器链,包含并行Capture和U ...

  3. 蓝桥杯 算法训练 P0505(Java解法)

    一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量中.因此, ...

  4. Java实现 LeetCode 633 平方数之和(暴力大法)

    633. 平方数之和 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 ...

  5. Java实现 蓝桥杯 算法提高 求arccos值

    算法提高 7-2求arccos值 时间限制:10.0s 内存限制:256.0MB 提交此题 问题描述 利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[-1, 1 ...

  6. Java实现蓝桥杯 算法提高 身份证号码升级

    算法提高 身份证号码升级 时间限制:1.0s 内存限制:256.0MB 问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位 ...

  7. Java实现 LeetCode 134 加油站

    134. 加油站 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升 ...

  8. Java实现最近点问题

    **问题描述:** 给定某空间中(直线空间或平面空间)n个点,请找出它们中的最近点对.你需要完成下列任务: 1.随机产生或手工输入n个点的坐标. 2.输出最近的两个点的坐标. 3.算法尽可能效率高. ...

  9. Java实现控制台版CS

    也可以把这四个类直接复制下去放在一个包下面 父类 package Cs1_6; public abstract class Persion { public abstract void Attack( ...

  10. (五)SQLMap工具检测SQL注入漏洞、获取数据库中的数据

    目录结构 一.判断被测url的参数是否存在注入点 二.获取数据库系统的所有数据库名称(暴库) 三.获取Web应用当前所连接的数据库 四.获取Web应用当前所操作的DBMS用户 五.列出数据库中的所有用 ...