多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
教大家简单的使用TP5整合阿里云OSS上传文件! 我本地开发环境为:WAMP; > php版本:7.2.1 > TP版本:5.1.13 首先使用composer 安装阿里云OSS扩展: ~~~ composer require aliyuncs/oss-sdk-php ~~~ 安装完成之后创建一个简单的表单页面! 本次的页面是利用表单跳转!不是利用ajax异步上传,不过都是一样的! 页面代码为 ~~~ public function up() { return view(); } ~~~ up模板文件为: ~~~ <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form action="{{:url('uploadFile')}}" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="提交"> </form> </body> </html> ~~~ uploadFile文件为: ~~~ /** *简单的写一下注释,看到有很多人在上传的 时候现是移动到本地文件,然后上传到阿里云,然后再删除,个人觉得这样的做法好蠢! *大家都知道磁盘IO吧(I是input 输入) O(output 输出) *大量的删除文件写入文件对服务器也是有影响的,对于这样操作的人真是不知道出于什么目的....还不如不用阿里云OSS呢 */ public function uploadFile() { $file = request()->file('file'); //获取到上传的文件 $resResult = Image::open($file); // 尝试执行 try { $config = Config::pull('aliyunOss'); //获取Oss的配置 //实例化对象 将配置传入 $ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']); //这里是有sha1加密 生成文件名 之后连接上后缀 $fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type(); //执行阿里云上传 $result = $ossClient->uploadFile($config['Bucket'], $fileName, $file->getInfo()['tmp_name']); /** * 这个只是为了展示 * 可以删除或者保留下做后面的操作 */ $arr = [ '图片地址:' => $result['info']['url'], '数据库保存名称' => $fileName ]; } catch (OssException $e) { return $e->getMessage(); } //将结果输出 dump($arr); } ~~~ ok上传成功 最后将图片展示给大家,省着点点击哦,要钱的,大哥们! http://haotianlee.oss-cn-hongkong.aliyuncs.com/6484eb37c9cb5e5c0535b6c9a0d06663606397c9.jpeg 最后给大家给一个全部的代码,以免大家出问题: ~~~ <?php /** * User: 李昊天 * Date: 2018/5/17 * Time: 2:16 * Email: haotian0607@gmail.com */ namespace app\index\controller; use OSS\Core\OssException; use OSS\OssClient; use think\Controller; use think\facade\Config; use think\Image; class Index extends Controller { public function up() { return $this->fetch(); } /** *简单的写一下注释 * 看到有很多人在上传的 时候现实移动到本地文件,然后上传到阿里云,个人觉得这样的做法好蠢! *大家都知道磁盘IO吧(I是input 输入) O(output 输出) *大量的删除文件写入文件对服务器也是有影响的,对于这样操作的人真是不知道出于什么目的.... * 还不如不用阿里云OSS呢 */ public function uploadFile() { $file = request()->file('file'); //获取到上传的文件 $resResult = Image::open($file); // 尝试执行 try { $config = Config::pull('aliyun_oss'); //获取Oss的配置 //实例化对象 将配置传入 $ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']); //这里是有sha1加密 生成文件名 之后连接上后缀 $fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type(); //执行阿里云上传 $result = $ossClient->uploadFile($config['Bucket'], $fileName, $file->getInfo()['tmp_name']); /** * 这个只是为了展示 * 可以删除或者保留下做后面的操作 */ $arr = [ '图片地址:' => $result['info']['url'], '数据库保存名称' => $fileName ]; } catch (OssException $e) { return $e->getMessage(); } //将结果输出 dump($arr); } } ~~~ 下次有时间使用ajax上传+数据库存入+使用场景+阿里云图片操作等完整场景,需要的朋友可以+收藏哦,代码有不合理之处望大家提处理!