# oss上傳文件
think-admin默認上傳文件到本地,如果需要使用第三方oss,需要使用到此庫
thinkphp6 oss庫: [https://github.com/suframe/oss](https://github.com/suframe/oss)
### 實現功能:
- 七牛服務器上傳文件
- 阿里os(待接入)
- 騰訊oss(待接入)
### 安裝
```
//安裝七牛sdk庫
composer require qiniu/php-sdk
//安裝think oss庫
composer require suframe/think-oss
```
修改配置文件 config/oss.php
```
<?php
return [
'driver' => \suframe\oss\driver\QiNiu::class,
'url' => 'oss/upload', //上傳的地址,可自定義
//上傳中間件,目前使用的think-admin后臺的中間件做身份過濾,可替換成你自己的中間件完成自己的驗證
'middleware' => function() {
return config('thinkAdmin.routeMiddleware', []);
},
//七牛oss配置
'qiniu' => [
'accessKey' => '',
'secretKey' => '',
'bucketDefault' => 'default', //默認的bucket
'bucket' => [
'default' => '' //填寫bucket綁定的域名
]
]
];
```
### 修改上傳
- 1.全局修改
在使用think-admin的時候,可以通過全局修改上傳地址上傳改造
修改 config/thinkAdmin.php
修改如下:
```
$rs = include (thinkAdminPath() . 'config/thinkAdminDefault.php');
$rs['upload_url'] = url(config('oss.url'))->build();
return $rs;
```
- 2.表單修改
如果只想部分表單使用oss上傳,可在相應的表單項替換:
例如 app/ui/form/NewsForm.php
```
public function image()
{
return [
'type' => 'uploadImage',
'action' => url(config('oss.url'))->build(),
//下面callback 非必須,默認使用oss.php配置文件里面的bucketDefault,如果要傳其他bucket,則增加callback即可
'callback' => function ($element) {
$element->data([
'bucket' => 'suframe',
]);
return $element;
}
];
}
```
修改action即可, 如果對應不同的bucket,在callback 中增加data選項即可
### 非think-admin下使用
非think-admin 下使用,需要自己去增加middleware,做身份過濾。