文件上传
源码
示例
Iris 的 UploadFormFiles
函数,其用法类似于 php
中的 move_uploaded_file
函数
const maxSize = 5 << 20 // 5MB
func main() {
app := iris.Default()
app.Post("/upload", iris.LimitRequestBodySize(maxSize), func(ctx iris.Context) {
//
// UploadFormFiles
// 上传任意数文件 ("multiple" 属性必须在form表单上存在).
//
// 第二个参数可选,函数类型
// 通常被用来修改上传文件名
// 本示例展示如何使用它
// 以当前用户的ip地址作为上传后文件名前缀
ctx.UploadFormFiles("./uploads", beforeSave)
})
app.Run(iris.Addr(":8080"))
}
func beforeSave(ctx iris.Context, file *multipart.FileHeader) {
ip := ctx.RemoteAddr()
// 让文件名保持统一的格式
// ip地址字符串的点与冒号全部替换为下划线
ip = strings.Replace(ip, ".", "_", -1)
ip = strings.Replace(ip, ":", "_", -1)
// 你也可基于当前时间,用 time.Now, 作为文件的前缀或后缀,权当练习
// 例如 unixTime := time.Now().Unix()
// prefix 使用 $IP- 作为文件名前缀
// 无需再多操作, 内部的文件上传器将使用这个名字
// 将文件保存在当前 "./uploads" 文件内,(当然前提是这个文件夹已经存在)
file.Filename = ip + "-" + file.Filename
}
命令行请求
curl -X POST http://localhost:8080/upload \
-F "files[]=@./myfile.zip" \
-F "files[]=@./mysecondfile.zip" \
-H "Content-Type: multipart/form-data"