laravel6使用腾讯云对象存储上传文件
2020-06-16 本文已影响0人
这真的是一个帅气的名字
先安装扩展包
composer require freyo/flysystem-qcloud-cos-v5
successfully
修改配置config/app.php
文件
'providers' => [
// ...
Freyo\Flysystem\QcloudCOSv5\ServiceProvider::class,
]
image.png
修改文件配置filesystems.php
'cosv5' => [
'driver' => 'cosv5',
'region' => env('COSV5_REGION', 'ap-beijing'),//后面是控制台储存桶里设置的所属地域
'credentials' => [
'appId' => env('COSV5_APP_ID'),
'secretId' => env('COSV5_SECRET_ID'),
'secretKey' => env('COSV5_SECRET_KEY'),
],
'timeout' => env('COSV5_TIMEOUT', 60),
'connect_timeout' => env('COSV5_CONNECT_TIMEOUT', 60),
'bucket' => env('COSV5_BUCKET'),
'cdn' => env('COSV5_CDN'),
'scheme' => env('COSV5_SCHEME', 'https'),
'read_from_cdn' => env('COSV5_READ_FROM_CDN', false),
],
image.png
配置.env文件信息
COSV5_APP_ID= ##APPid
COSV5_SECRET_ID= ##APP_secret
COSV5_SECRET_KEY= ## APP_KEY
COSV5_TIMEOUT=60
COSV5_CONNECT_TIMEOUT=60
COSV5_BUCKET= ##存储桶
COSV5_REGION=ap-beijing ##地区
COSV5_CDN= ##访问域名
COSV5_SCHEME=https
COSV5_READ_FROM_CDN=false
image.png
image.png
使用
路由
Route::get('/oss','AdminController@oss')->name("admin.oss");//测试
Route::post('/uposs','AdminController@uposs')->name("admin.uposs");//测试
页面
<form action="/admin/uposs" method="post" enctype="multipart/form-data">
@csrf
<input type="file" name="files_url">
<input type="submit" value="提交">
</form>
控制器
public function oss(){
return view('admin.oss');
}
public function uposs(Request $request)
{
$file = $request->file('files_url');
$disk = Storage::disk('cosv5');
$file_content = $disk -> put('video_class',$file);
//第一个参数是你储存桶里想要放置文件的路径,第二个参数是文件对象
$file_url = $disk->url($file_content);//获取到文件的线上地址
var_dump($file_url);
}
-----------以下是实际上传删除代码--------------
/**
* 上传cos
* @param $file
* @return mixed
*/
public function addCos($file){
try {
$disk = Storage::disk('cosv5');
$file_content = $disk -> put('video_class',$file);
//第一个参数是你储存桶里想要放置文件的路径,第二个参数是文件对象
$file_url = $disk->url($file_content);//获取到文件的线上地址
} catch (\Exception $e) {
//请求失败
echo($e);
}
return $file_url;
}
public function delCos($url){
preg_match("/https:\/\/(.+?)com\//", $url, $res);
$file_urs = str_replace($res[0],"",$url);
$arr = array();
array_push($arr,$file_urs);
try {
$disk = Storage::disk('cosv5');
$file_content = $disk->delete($arr);
} catch (\Exception $e) {
//请求失败
echo($e);
}
return $file_content;
}
测试结果
image.png这里的video_class 和uposs方法,put的路径是一样的,相当于可以创建文件夹
image.png image.png