日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

ThinkPHP3.2 实现阿里云OSS上传文件

發布時間:2023/12/9 php 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ThinkPHP3.2 实现阿里云OSS上传文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

0、配置文件Config,加入OSS配置選項,設置php.ini最大上傳大小(自行解決,這里不做演示)

'OSS' => array('ACCESS_KEY_ID' => '**************', //從OSS獲得的AccessKeyId'ACCESS_KEY_SECRET' => '**************', //從OSS獲得的AccessKeySecret'ENDPOINT' => 'oss-cn-beijing.aliyuncs.com', //您選定的OSS數據中心訪問域名,例如oss-cn-hangzhou.aliyuncs.com'BUCKET'=>'ycwlwhg'),

1、index.html

<form action="{:U('Home/Oss/post')}" method="post" enctype="multipart/form-data"><input type="text" name="dir" placeholder="文件夾"><input type="file" name="file[]" multiple /><input type="submit" value="上傳"></form>

2、下載阿里云OSS的PHPSDK?,放置于ThinkPHP/Library/Vendor/下,起名叫OSS,圖示

3、上傳類

?

<?phpnamespace Home\Controller;use OSS\Core\OssException; use OSS\OssClient; use Think\Controller;class OssController extends Controller {public function index(){$this->display();}//獲取文件名//true 文件名 ?false后綴function retrieve($file, $type = true){$arr = explode('.', $file);if ($type) {return $arr[0];} else {return $arr[1];}}function Directory($dir){if (is_dir($dir) || @mkdir($dir, 0777)) { //查看目錄是否已經存在或嘗試創建,加一個@抑制符號是因為第一次創建失敗,會報一個“父目錄不存在”的警告。//echo $dir . "創建成功<br>"; ?//輸出創建成功的目錄} else {$dirArr = explode('/', $dir); //當子目錄沒創建成功時,試圖創建父目錄,用explode()函數以'/'分隔符切割成一個數組array_pop($dirArr); //將數組中的最后一項(即子目錄)彈出來,$newDir = implode('/', $dirArr); //重新組合成一個文件夾字符串$this->Directory($newDir); //試圖創建父目錄@mkdir($dir, 0777);}}public function post(){//要上傳至OSS的文件夾路徑? 如? dir/dir1/dir2$dir ? ? ? ? ? ? ? ?= I('dir');$upload ? ? ? ? ? ? = new \Think\Upload();// 實例化上傳類$upload->maxSize ? ?= 3145728;// 設置附件上傳大小$upload->rootPath ? = './Public/'; // 設置附件上傳根目錄$upload->savePath ? = '/uploads/'; // 設置附件上傳(子)目錄vendor('OSS.autoload');$ossConfig ? ? ? ? ?= C('OSS');$accessKeyId ? ? ? ?= $ossConfig['ACCESS_KEY_ID'];//阿里云OSS? ID$accessKeySecret ? ?= $ossConfig['ACCESS_KEY_SECRET'];//阿里云OSS 秘鑰$endpoint ? ? ? ? ? = $ossConfig['ENDPOINT'];//阿里云OSS 地址$ossClient ? ? ? ? ?= new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);$bucket ? ? ? ? ? ? = $ossConfig['BUCKET']; //oss中的文件上傳空間$info ? ? ? ? ? ? ? = $upload->upload();if (!$info) {// 上傳錯誤提示錯誤信息//處理上傳錯誤信息$this->error($upload->getError());} else {// 上傳成功foreach ($info as $k => $v){$object ? ? = $dir . '/' . $v['name'];//想要保存文件的名稱//這個數組是存上傳成功以后返回的訪問路徑,多文件時使用implode函數將其組合$downlink[] = $bucket.'.'.$endpoint.'/'.$object;$file ? ? ? = './Public' . $info[$k]['savepath'] . $v['savename'];//本地文件路徑try {$ossClient->uploadFile($bucket, $object, $file);//上傳成功//這里可以刪除上傳到本地的文件。unlink($file);} catch (OssException $e) {//上傳失敗printf($e->getMessage() . "\n");return;}}}}}

?

轉載于:https://my.oschina.net/marhal/blog/1787086

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ThinkPHP3.2 实现阿里云OSS上传文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。