文件上传

未匹配的标注

源码

示例

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"

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
pardon110
讨论数量: 0
发起讨论 只看当前版本


暂无话题~