Detaylıca değinmiyorum. input elementlerinin name özelliğinde ne isim verdiğimizi dikkat etmemiz yeterli. form elementinin action özelliğine /yukle adresini verdik.
main.go dosyamız ise aşağıdaki gibi olacaktır. Detaylarına yorum satırlarında değindim.
packagemainimport ("fmt""path/filepath""github.com/gin-gonic/gin")funcmain() { router := gin.Default()//Yükleme yapacağımız dosyanın maksimum boyutunu//ayarlayalım. router.MaxMultipartMemory =8<<20// 8 MiB//index.html dosyamızın bulunduğu klasörü static olarak//ekliyoruz ki index.html dosyamızı kullanabilelim. router.Static("/", "./website")//yukleme işlemini yapacak olduğumuz yönlendirmeyi//buradan ayarlıyoruz. router.POST("/yukle", func(c *gin.Context) {//form içerisindeki dosya hariç verilerimizi//atayalım isim := c.PostForm("isim") eposta := c.PostForm("email")// Dosyamızı ise özel fonksiyon ile atıyoruz dosya, hata := c.FormFile("dosya")//Hata kontrolü yapmayı unutmayalım.if hata !=nil { c.String(400, fmt.Sprintf("Form Hatası: %s", hata.Error()))return }//yüklenecek olan dosyanın ismini alalım. dosyaismi := filepath.Base(dosya.Filename)//yüklenen dosyanın kaydedileceği konum// dizin + dosyaismi kayıtYeri :="./website/"+ dosyaismi//dosyayı kaydedelim ve hata kontrolü yapalım.if hata := c.SaveUploadedFile(dosya, kayıtYeri); hata !=nil { c.String(400, fmt.Sprintf("Dosya Yükleme Hatası: %s", hata.Error()))return }//Şuana kadar herhangi bir sıkıntı ile//karşılaşmadıysak, olumlu mesajımızı gösterelim. c.String(200, fmt.Sprintf("%s isimli dosya başarıyla yüklendi \nİsim: %s\nE-posta: %s", dosya.Filename, isim, eposta))
}) router.Run(":8080")}