Orange 內置了文件上傳模塊,通過簡單配置就能快速進行文件上傳操作。
### 配置
~~~
[app]
...
[app.upload]
storage = "./storage/allimg" //文件存放路徑
maxSize = 2096157 // 文件大小限制
ext = ["jpg"] //文件格式過濾
~~~
### 上傳操作
上傳請求請將表單類型配置成 `multipart/form-data`
#### 上傳并自動存儲到本地
```
// 在控制器方法中添加如下代碼
func Upload(c *app.Context) error {
// 文件表單名稱 file
// path 返回的是文件存儲的相對路徑
path, err := c.AppUpload("file")
if err != nil {
return c.ToString(err.Error())
}
return c.ToJson(map[string]interface{}{
"info": "upload success",
"path": path,
})
}
```
#### 上傳并返回數據對象
很多時候我們上傳后的文件不希望直接存儲到本地,比如我們希望將文件發送到阿里云 / 騰訊云對象存儲,圖片鑒別等服務,我們可以通過如下方法獲取上傳后的文件 byte 數據,然后我們可以使用 byte 數據進行我們的業務操作。
```
// 在控制器方法中添加如下代碼
func Upload(c *app.Context) error {
// 文件表單名稱 file
// fileInfo 返回的是文件上傳成功后的一個結構體數據
fileInfo, err := c.AppUploadToData("file")
if err != nil {
return c.ToString(err.Error())
}
// 獲取文件 byte 數據
fileByte := fileInfo.FileByte
...
}
```