อัปโหลดไฟล์เดียว
const maxSize = 8 * iris.MB
func main() {
app := iris.Default()
app.Post("/upload", func(ctx iris.Context) {
// กำหนดขนาดของตัวข้อมูลที่ส่งเข้ามา ซึ่งจำกัดขนาดของไฟล์ที่จะอัปโหลด (ค่าเริ่มต้นคือ 32 MiB)
ctx.SetMaxRequestBodySize(maxSize)
// หรือ
// app.Use(iris.LimitRequestBodySize(maxSize))
// หรือ
// iris.WithPostMaxMemory(maxSize)
// อ่านไฟล์
file, fileHeader, err:= ctx.FormFile("file")
if err != nil {
ctx.StopWithError(iris.StatusBadRequest, err)
return
}
// บันทึกไฟล์ที่อัปโหลดไว้ในไดเรกทอรีที่กำหนด
dest := filepath.Join("./uploads", fileHeader.Filename)
ctx.SaveFormFile(fileHeader, dest)
ctx.Writef("ไฟล์: %s ถูกอัปโหลดเรียบร้อยแล้ว!", fileHeader.Filename)
})
app.Listen(":8080")
}
ทดสอบการอัปโหลดไฟล์
curl -X POST http://localhost:8080/upload \
-F "file=@/Users/kataras/test.zip" \
-H "Content-Type: multipart/form-data"
อัปโหลดไฟล์หลายไฟล์
func main() {
app := iris.Default()
app.Post("/upload", func(ctx iris.Context) {
// อ่านไฟล์หลายไฟล์
files, n, err := ctx.UploadFormFiles("./uploads")
if err != nil {
ctx.StopWithStatus(iris.StatusInternalServerError)
return
}
ctx.Writef("มีไฟล์ %d ไฟล์ รวมขนาด %d ถูกอัปโหลดเรียบร้อยแล้ว!", len(files), n)
})
app.Listen(":8080", iris.WithPostMaxMemory(8 * iris.MB))
}
ทดสอบการอัปโหลดไฟล์หลายไฟล์
curl -X POST http://localhost:8080/upload \
-F "upload[]=@/Users/kataras/test1.zip" \
-F "upload[]=@/Users/kataras/test2.zip" \
-H "Content-Type: multipart/form-data"