ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
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 ... } ```