Added cleanup logic.
This commit is contained in:
31
controllers/download.go
Normal file
31
controllers/download.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func HandleFileDownload(c *gin.Context) {
|
||||
fileID, filename := c.Param("fileID"), c.Param("filename")
|
||||
|
||||
if fileID == "" || filename == "" {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "File ID and filename are required"})
|
||||
return
|
||||
}
|
||||
|
||||
filePath := filepath.Join("./uploads", fileID, filename)
|
||||
|
||||
if _, err := os.Stat(filePath); os.IsNotExist(err) {
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": "File not found"})
|
||||
return
|
||||
}
|
||||
|
||||
c.Header("Content-Description", "File Transfer")
|
||||
c.Header("Content-Transfer-Encoding", "binary")
|
||||
c.Header("Content-Disposition", "attachment; filename="+filename)
|
||||
c.Header("Content-Type", "application/octet-stream")
|
||||
c.File(filePath)
|
||||
}
|
||||
Reference in New Issue
Block a user