PHP 上传文件至阿里云OSS对象存储
简述
1、阿里云开通对象存储服务 OSS 并创建Bucket
2、下载PHP SDK至框架扩展目录,点我下载
3、码上code
阿里云操作
开通对象存储服务 OSS
创建 Bucket

配置AccessKey与Access Key Secret
进入管理AccessKey页面 (可将鼠标放在右上角用户头像上,在弹出来的框中点击AccessKey 管理)

找到Bucket对应的外网访问节点

下载 PHP SDK
SDK 下载完成后放入框架对应的扩展目录
上码
config配置
//阿里云OSS配置
'alioss' =>[
'AccessKeyID' => 'AccessKey ID',
'AccessKeySecret' => 'Access Key Secret',
'EndPoint' => '外网访问地域节点',
'Bucket' => 'Bucket 名称',
],
后端结合SDK实现文件上传至阿里云OSS
以ThinkPHP5为例
<?php
namespace app\controller;
use think\Controller;
use think\Image;
require_once APP_PATH . '/../extend/aliyun-oss/autoload.php'; //引入阿里云OSS SDK,注意替换路径
use OSS\Core\OssException;
use OSS\OssClient;
class AliOssUpload
{
/**
* 文件上传接口
*
*/
public function uploadFile()
{
//接收上传文件
$file = $this->request->file('file');
$res = [];
if($file){
//调用阿里云OSS上传
$res = self::AliuploadFile('img', $file);
if ($res['code'] == 200) {
//业务逻辑处理......
}
}else{
$res['code']=0;
$res['msg']='没有上传文件';
}
return json($res);
}
/**
* 调用阿里云OSS SDK
* @param $module 模块
* @param $file 上传的文件
* @return array 阿里云OSS上传处理结果
*
*/
public static function AliuploadFile($module, $file)
{
$resResult = Image::open($file);
try {
//获取OSS参数值
$KeyId = config('alioss.AccessKeyID');
$KeySecret = config('alioss.AccessKeySecret');
$EndPoint = config('alioss.EndPoint');
$Bucket = config('alioss.Bucket');
//实例化
$ossClient = new OssClient($KeyId, $KeySecret, $EndPoint);
//sha1加密 生成文件名 连接后缀
$fileName = $module . '/' . sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
//执行阿里云上传
$result = $ossClient->uploadFile($Bucket, $fileName, $file->getInfo()['tmp_name']);
//图片地址:$result['info']['url']
$arr = ['code' => 200, 'msg' => '上传成功', 'data' => $result['info']['url']];
} catch (OssException $e) {
$arr = ['code' => 0, 'msg' => $e->getMessage(), 'data' => ''];
}
return $arr;
}
}
前端参考代码
前端使用layui,谨慎参考
<div class="layui-upload" id="upload-thumb">
<label class="layui-form-label">缩略图</label>
<button type="button" class="layui-btn" id="thumb">上传图片</button>
<div class="layui-upload-list">
<label class="layui-form-label"></label>
<img class="layui-upload-img" id="demo1" width="150" height="150">
<p id="demoText"></p>
</div>
</div>
<script>
//上传图片接口
layui.use('upload', function(){
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#thumb' //绑定元素
,url: "{:url('AliOssUpload/uploadFile')}" //上传接口
,data:{use:'article_thumb'}
,done: function(res){
//上传完毕回调
if(res.code == 200) {
//前台显示预览图
$('#demo1').attr('src',res.data);
$('#upload-thumb').append('<input type="hidden" name="thumb" value="'+ res.data +'">');
} else {
layer.msg(res.msg);
}
}
,error: function(){
//请求异常回调
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
}
});
});
</script>
PHP 上传文件至阿里云OSS对象存储的更多相关文章
- 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手
关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手 本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...
- vue + elementUi + upLoadIamge组件 上传文件到阿里云oss
<template> <div class="upLoadIamge"> <el-upload action="https://jsonpl ...
- PHP上传文件到阿里云OSS,nginx代理访问
1. 阿里云OSS创建存储空间Bucket(读写权限为:公共读) 2. 拿到相关配置 accessKeyId:********* accessKeySecret:********* endpoint: ...
- OSS上传文件到阿里云
最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云oss上去了, oss的使用网上有很多介绍,都是去配置一下需要的数据,然后直接调用他的api就可以了. ...
- SpringBoot整合阿里云OSS对象存储实现文件上传
1. 准备工作: 一.首先登录阿里云OSS对象存储控制台创建一个Bucket作为你的存储空间. 二.创建Access Keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文 ...
- iOS使用阿里云OSS对象存储 (SDK 2.1.1)
最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...
- Java使用阿里云OSS对象存储上传图片
原 Java使用阿里云OSS对象存储上传图片 2017年03月27日 10:47:28 陌上桑花开花 阅读数 26804更多 分类专栏: 工作案例总结 版权声明:本文为博主原创文章,遵循CC 4.0 ...
- C# .net Ueditor实现图片上传到阿里云OSS 对象存储
在学习的时候,项目中需要实现在Ueditor编辑器中将图片上传到云储存中,老师演示的是上传到又拍云存储,既然看了一遍,直接照搬不算本事,咱们可以依葫芦画瓢自己来动手玩玩其它的云存储服务. 现在云计算产 ...
- 阿里云Oss对象存储
将文件保存到阿里云上. 1.添加对象存储OSS空间 (新建Bucket) 可以在阿里云后台对象存储里面添加,也可以通过api添加.添加之后设置权限. skd使用. 1安装 Aliyun.OSS.SDK ...
随机推荐
- Java 运行时数据区和内存模型
运行时数据区是指对 JVM 运行过程中涉及到的内存根据功能.目的进行的划分,而内存模型可以理解为对内存进行存取操作的过程定义.总是有人望文生义的将前者描述为 "Java 内存模型" ...
- asp.net core 实现支持自定义 Content-Type
asp.net core 实现支持自定义 Content-Type Intro 我们最近有一个原本是内网的服务要上公网,在公网上有一层 Cloudflare 作为网站的公网流量提供者,CloudFla ...
- java重写toString()方法
toString()方法是Object类的方法,调用toString()会返回对象的描述信息. 1)为什么重写toString()方法呢? 如果不重写,直接调用Object类的toString()方法 ...
- Docker备份Gitlab容器以及还原数据
概述 今天,我们将学习如何快速地对docker容器进行快捷备份.恢复和迁移.Docker是一个开源平台,用于自动化部署应用,以通过快捷的途径在称之为容器的轻量级软件层下打包.发布和运行这些应用.它使得 ...
- 【linux】命令-网络相关
目录 前言 1. ifconfig 1.1 语法 1.2 参数说明 1.3 例程 2. iw 2.1 扫描可用无线网络 2.2 WiFi连接步骤(教程A) 2.2.1 查看可以用无线设备信息 2.2. ...
- 「HTML+CSS」--自定义加载动画【008】
前言 Hello!小伙伴! 首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 哈哈 自我介绍一下 昵称:海轰 标签:程序猿一只|C++选手|学生 简介:因C语言结识编程,随后转入计算机 ...
- [Azure Devops] 使用 Azure Pipelines 实现 CI
1. 什么是 Azure Pipelines Azure Pipelines 会自动构建和测试代码项目,以将其提供给其他人.它适用于任何语言或项目类型.Azure Pipelines 结合了持续集成 ...
- noip初赛复习总纲
初赛复习总纲 目录 初赛复习总纲 计算机发展史 计算机的分类 计算机的应用 操作系统盘点 计算机的基本结构 中央处理器(**CPU**--**Central Processing Unit**) 存储 ...
- (五)Struts2处理结果管理
当Action处理完用户请求时,处理结果应该通过视图资源实现,但将哪个视图呈现给浏览者呢.由<result.../>来决定 Action处理完用户请求后,返回一个普通字符串.整个普通字符串 ...
- 【CTF】CTFHub 技能树 文件头检查 writeup
PHP一句话木马 <?php @eval($_POST["pass"]);?> <?php eval($_REQUEST["pass"]);? ...