upload file service added

master
nima 2024-07-13 16:48:09 +03:30
parent 2a1de207df
commit a0e40b3a8f
1 changed files with 56 additions and 0 deletions

56
services/upload.go 100644
View File

@ -0,0 +1,56 @@
package services
import (
"io"
"net/http"
"os"
"github.com/labstack/echo/v4"
)
func Upload(c echo.Context) error {
file, err := c.FormFile("file")
if err != nil {
return err
}
src, err := file.Open()
if err != nil {
return err
}
defer src.Close()
// Read the file header to determine the MIME type
buff := make([]byte, 512)
if _, err := src.Read(buff); err != nil {
return err
}
filetype := http.DetectContentType(buff)
// Verify if the file is a ZIP file
if filetype != "application/zip" && filetype != "application/x-zip-compressed" {
return c.JSON(http.StatusBadRequest, map[string]string{
"error": "The uploaded file is not a ZIP file",
})
}
// Reset the file pointer to the beginning
if _, err := src.Seek(0, io.SeekStart); err != nil {
return err
}
// Destination
dst, err := os.Create("./uploads/" + file.Filename)
if err != nil {
return err
}
if _, err = io.Copy(dst, src); err != nil {
return err
}
return c.JSON(http.StatusOK, map[string]string{
"message": "File uploaded successfully",
})
}