Laravel8.x使用overtrue/laravel-filesystem-qiniu上传图片到七牛云
作者:温新
时间:2021-07-26
hi,我是温新,一名PHPer
此篇文章使用Laravel8.x上传文件(图片)到七年牛。之前是有记录过基于另外一个第三方扩展包的用法,详情可以参考 Laravel6.x上传图片到七牛云 这篇文章。
Laravel8.x将使用overtrue/laravel-filesystem-qiniu
这个扩展来记录上传图片到七牛云。从github
来看,这个包很长时间没有更新。我是基于Laravel8.x来使用,目前没有发现问题。
准备工作
1)准备好七牛云账号;
2)购买好对象存储服务;
3)创建对象窗口空间;
4)域名绑定,也可以使用临时提供的。我创建的是域名绑定,访问图片时,路径将会是使用我的域名。
安装overtrue/laravel-filesystem-qinniu
第一步:安装
$ composer require "overtrue/laravel-filesystem-qiniu"
第二步:配置
文件位置:config/app.php
'providers' => [
// Other service providers...
Overtrue\LaravelFilesystem\Qiniu\QiniuStorageServiceProvider::class,
],
文件位置:config/filesystems.php
<?php
return [
'disks' => [
//...
'qiniu' => [
'driver' => 'qiniu',
'access_key' => env('QINIU_ACCESS_KEY', 'xxxxxxxxxxxxxxxx'),
'secret_key' => env('QINIU_SECRET_KEY', 'xxxxxxxxxxxxxxxx'),
'bucket' => env('QINIU_BUCKET', 'test'),
'domain' => env('QINIU_DOMAIN', 'xxx.clouddn.com'), // or host: https://xxxx.clouddn.com
],
//...
]
];
上传图片到七牛云
注意:这一步我是在项目中操作的,因此本地并未实际测试,但操作都是一样的。
第一步:配置七牛云信息
文件:env
QINIU_ACCESS_KEY=key
QINIU_SECRET_KEY=secket
QINIU_BUCKET=七牛对象存空间名
# 注意,必须携带 http://或https://
QINIU_DOMAIN=https://www.ziruchu.com
第二步:配置路由
文件位置:routes/web.php
Route::post('art/upload','ArticleController@upload');
第三步:控制器方法
use Illuminate\Support\Facades\Storage;
// 图片上传
public function upload(Request $request)
{
if ($request->isMethod('POST')) {
// 判断有文件上传且文件上传成功
if ($request->hasFile('file') && $request->file('file')->isValid()) {
// 获取上传文件
$file = $request->file('file');
// 获取文件后缀
$ext = $file->getClientOriginalExtension();
// 获取上传文件大小
$size = $file->getSize();
// 允许文件上传格式
$allowExt = ['jpg','jpeg','gif','png'];
// 允许文件上传大小
$allowSize = 1024 * 1024;
// 新文件名
$newFileName = date('Ymd') . rand(100000, 999999) . '.' . $ext;
if (!in_array($ext, $allowExt)) {
return ['code' => 400, 'msg' => '非法文件上传'];
}
if ($size > $allowSize) {
return ['code' => 401, 'msg' => '上传文件过大'];
}
// 将图片上传到七牛云
$result = Storage::disk('qiniu')->writeStream($newFileName,fopen($file->getRealPath(),'r'));
if ($result) {
return ['code' => 200, 'msg' => '文件上传成功', 'filePath' => $newFileName];
}
}
}
}
这段上传代码会很熟悉,Laravel学习笔记基础系列--(十一)Laravel上传文件 这篇文章就是,几乎可以直接拿来就用。
第四步:前端界面使用
文件:edit.blade.php
<div class="layui-upload-list">
<img class="layui-upload-img" src="{{env('QINIU_DOMAIN') . '/'.$art->thumb}}" id="demo1" style="width: 150px;float: left;margin-left: 190px;margin-top: -50px;">
<p id="demoText"></p>
</div>
基础操作到这里就结束了。以后要用到了,直接过来拿,岂不是很方便!
我是温新
每天进步一点点,就一点点
请登录后再评论