Lewati ke konten

File tunggal

Gunakan c.FormFile untuk menerima satu file yang diupload dari request multipart/form-data, kemudian c.SaveUploadedFile untuk menyimpannya ke disk.

Anda dapat mengontrol memori maksimum yang digunakan selama parsing multipart dengan mengatur router.MaxMultipartMemory (default adalah 32 MiB). File yang lebih besar dari batas ini disimpan di file sementara pada disk alih-alih di memori.

package main
import (
"fmt"
"log"
"net/http"
"path/filepath"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
// Set a lower memory limit for multipart forms (default is 32 MiB)
router.MaxMultipartMemory = 8 << 20 // 8 MiB
router.POST("/upload", func(c *gin.Context) {
// single file
file, err := c.FormFile("file")
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
log.Println(file.Filename)
// Upload the file to specific dst.
dst := filepath.Join("./files/", filepath.Base(file.Filename))
c.SaveUploadedFile(file, dst)
c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
})
router.Run(":8080")
}

Uji coba

Terminal window
curl -X POST http://localhost:8080/upload \
-F "file=@/path/to/your/file.zip" \
-H "Content-Type: multipart/form-data"
# Output: 'file.zip' uploaded!

Lihat juga