Tekli dosya
Bir multipart/form-data isteğinden tek bir yüklenen dosyayı almak için c.FormFile kullanın, ardından diske kaydetmek için c.SaveUploadedFile kullanın.
router.MaxMultipartMemory ayarını yaparak multipart ayrıştırma sırasında kullanılan maksimum belleği kontrol edebilirsiniz (varsayılan 32 MiB). Bu limitten büyük dosyalar bellekte değil diskteki geçici dosyalarda saklanır.
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")}Test et
curl -X POST http://localhost:8080/upload \ -F "file=@/path/to/your/file.zip" \ -H "Content-Type: multipart/form-data"# Output: 'file.zip' uploaded!