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. Rocket - util - Annotations

    https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg   介绍util中定义的注解(Annotations).   ​​   1. Annotation ...

  2. 【Hadoop】mapreduce环形缓冲区

    mapreduce过程解析 数据在map中怎么写入磁盘? 数据:经过map逻辑处理过后的数据(key,value)- 磁盘:本地磁盘 环形缓冲区 1.为什么要环形缓冲区? 答:使用环形缓冲区,便于写入 ...

  3. JavaSE (五)面向对象 -- 概述

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 目录 一.面向对象的主线 二.面向对象 VS 面向过程 三 . java最基本的两个要素 - 类和对象 ...

  4. Java实现 LeetCode 697 数组的度(类似于数组的map)

    697. 数组的度 给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值. 你的任务是找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度. 示 ...

  5. Java实现 LeetCode 219 存在重复元素 II(二)

    219. 存在重复元素 II 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k. 示 ...

  6. excel表 更改后缀名 xlsx转成csv csv转换xlsx

    excel 转成CSV 步骤: 1.打开你需要转换的Excel表格.这里特别介绍一下多个数字的现象,我们知道,像身份证这些多位数字,在正常表格里都是会加上一个'来使其显示的,或者换成"文本& ...

  7. Java实现 基础算法 求100以内的质数

    public class 求质数 { public static void main(String[] args) { for (int i = 2; i < 100; i++) { int t ...

  8. Java学习之斐波那契数列实现

    描述 一个斐波那契序列,F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n>=2),根据n的值,计算斐波那契数F(n),其中0≤n≤1000. 输入 输入 ...

  9. AS中将module转成library的步骤

    转换步骤是在Android Studio 2.3版本下进行的,其他版本未测试 将要变成library的module的gradle文件的第一行 修改前:apply plugin: 'com.Androi ...

  10. JVM中堆的介绍

    一.堆的概述 一个JVM实例只有一个堆内存,堆也是Java内存管理的核心区域,堆在JVM启动的时候创建,其空间大小也被创建,是JVM中最大的一块内存空间,所有线程共享Java堆,物理上不连续的逻辑上连 ...