阿里对象存储OSS在laravel框架中的使用方法


Posted in PHP onOctober 13, 2019

最近比较忙,也没来得及写博客。加上最近也确实没有接触到什么新技术,有点尴尬。。。

在昨天算是第一次接触对象存储这个东西,研究了一天,算是在项目中走得通了,所以在此分享给大家,是最基础的OSS上传图片部分,希望能自己以后能少踩坑,也希望能帮助到大家。

首先呢,现在百度出来的,基本都是laravel大神自己封装的composer包,可惜我实在是不能用,所以只能老老实实的在项目中引入SDK了。。。

1、引入阿里的SDK文件

阿里对象存储OSS在laravel框架中的使用方法

如图所示,其实我也不知道该放哪里合适,不过laravel的好处是命名空间比较好使,所以我直接把SDK重命名为OSS,然后目录路径为:App\Helpers\OSS

2、就是修改命名空间,主要是你能用得上的文件,大概有7-8个,把命名空间都定义好

3、修改配置文件,config.php,这个是SDK中的配置文件,需要把相应的配置写清楚

阿里对象存储OSS在laravel框架中的使用方法

(坑:endpoint这个部分,前面一定不要加你的bucket,不然就重复了。。。例如,我的endpoint是

'oss-cn-shanghai.aliyuncs.com'
)

4、都配置的差不多了,接下来就是上传文件了

public static function uploadOne($filename)
{
 $file = \Illuminate\Support\Facades\Request::file($filename);
 if (!$file) {
 exit("请上传图片");
 }
 // 文件是否上传成功
 if ($file->isValid()) {

 // 获取文件相关信息
 $originalName = $file->getClientOriginalName(); // 文件原名
 $ext = $file->getClientOriginalExtension(); // 扩展名
 $realPath = $file->getRealPath(); //临时文件的绝对路径
 $type = $file->getClientMimeType(); // image/jpeg
 $content = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;

 require_once(base_path() . '/app/Helpers/Oss/autoload.php');

 $bucket = Config::OSS_TEST_BUCKET;
 $accessKeyId = Config::OSS_ACCESS_ID;
 $accessKeySecret = Config::OSS_ACCESS_KEY;
 $endpoint = Config::OSS_ENDPOINT;
 $ossClient = Common::getOssClient();
 /*var_dump($ossClient);
 exit;*/
 $object = "user/" . $content;
 $filePath = $file;
 $result = $ossClient->UploadFile($bucket, $object, $filePath);
 if (!$result) {
  exit("上传图片失败");
 }
 return $content;
 }
}

上代码,主要从require_once开始的,引入SDK的加载文件,然后把各项配置通过config引入进来。

$object是你要存储的文件。比如楼主这里,就是相当于存储在bucket下的user文件下。然后通过

$filePath = $file来获得图片的内容,使用UploadFile方法进行上传。然后看返回值,成功即可。

5、遇到的坑:首先是SDK中的autoload.php一直报错,

function classLoader($class)
{
 $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
 $file = __DIR__ . DIRECTORY_SEPARATOR .'src'. DIRECTORY_SEPARATOR . $path . '.php';
 if (file_exists($file)) {
 require_once $file;
 }
}
/*spl_autoload_register('classLoader');*/

像这样的,我就直接注释了,也没什么后果,不过在后面可能会用得上吧,需要继续研究

其次就是上传的时候遇到的小问题了,这个根据错误提示修改即可,一般来说按我的走,能实现基本的上传图片,如果是上传文件的话,直接修改上传方法:$ossClient->putobj()就可以了

总结:我这个只是最基础的后台上传。未来做APP上传的时候,肯定是需要ajax先获取一个加密码,然后再url中加上这个加密码进行识别,,还有就是图片的删除等问题,仍需研究。。。以后如果研究好了,就再分享给大家。

以上这篇阿里对象存储OSS在laravel框架中的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
May 17 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 #PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 #PHP
laravel实现上传图片的两种方式小结
Oct 12 #PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 #PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 #PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 #PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 #PHP
You might like
PHP 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
php session的应用详细介绍
2017/03/22 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python callable()函数用法实例分析
2018/03/17 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
升学宴主持词
2014/04/02 职场文书
财务情况说明书范文
2014/05/06 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
体育活动总结
2015/02/04 职场文书
元旦主持词开场白
2015/05/29 职场文书
校园新闻稿范文
2015/07/18 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android