2023-02-08 10:11:46 +00:00
|
|
|
package v2
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
2023-12-27 08:17:33 +00:00
|
|
|
"strconv"
|
2023-02-08 10:11:46 +00:00
|
|
|
|
2023-12-27 08:17:33 +00:00
|
|
|
"github.com/IceWhaleTech/CasaOS/codegen"
|
2023-02-08 10:11:46 +00:00
|
|
|
"github.com/labstack/echo/v4"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Path: route/v2/file.go
|
|
|
|
|
|
|
|
func (s *CasaOS) GetFileTest(ctx echo.Context) error {
|
|
|
|
|
|
|
|
//http.ServeFile(w, r, r.URL.Path[1:])
|
|
|
|
http.ServeFile(ctx.Response().Writer, ctx.Request(), "/DATA/test.img")
|
|
|
|
|
|
|
|
return ctx.String(200, "pong")
|
|
|
|
}
|
2023-12-27 08:17:33 +00:00
|
|
|
|
|
|
|
func (c *CasaOS) CheckUploadChunk(ctx echo.Context, params codegen.CheckUploadChunkParams) error {
|
|
|
|
identifier := ctx.QueryParam("identifier")
|
|
|
|
chunkNumber, err := strconv.ParseInt(ctx.QueryParam("chunkNumber"), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.NoContent(http.StatusBadRequest)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.fileUploadService.TestChunk(ctx, identifier, chunkNumber)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.NoContent(http.StatusNoContent)
|
|
|
|
}
|
|
|
|
return ctx.NoContent(http.StatusOK)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *CasaOS) PostUploadFile(ctx echo.Context) error {
|
|
|
|
path := ctx.FormValue("path")
|
|
|
|
|
|
|
|
// handle the request
|
|
|
|
chunkNumber, err := strconv.ParseInt(ctx.FormValue("chunkNumber"), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusBadRequest, err)
|
|
|
|
}
|
|
|
|
chunkSize, err := strconv.ParseInt(ctx.FormValue("chunkSize"), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusBadRequest, err)
|
|
|
|
}
|
|
|
|
currentChunkSize, err := strconv.ParseInt(ctx.FormValue("currentChunkSize"), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusBadRequest, err)
|
|
|
|
}
|
|
|
|
totalChunks, err := strconv.ParseInt(ctx.FormValue("totalChunks"), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusBadRequest, err)
|
|
|
|
}
|
|
|
|
totalSize, err := strconv.ParseInt(ctx.FormValue("totalSize"), 10, 64)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusBadRequest, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
identifier := ctx.FormValue("identifier")
|
|
|
|
fileName := ctx.FormValue("filename")
|
|
|
|
bin, err := ctx.FormFile("file")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusBadRequest, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
err = c.fileUploadService.UploadFile(
|
|
|
|
ctx,
|
|
|
|
path,
|
|
|
|
chunkNumber,
|
|
|
|
chunkSize,
|
|
|
|
currentChunkSize,
|
|
|
|
totalChunks,
|
|
|
|
totalSize,
|
|
|
|
identifier,
|
|
|
|
fileName,
|
|
|
|
bin,
|
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
return ctx.JSON(http.StatusInternalServerError, err)
|
|
|
|
}
|
|
|
|
return ctx.NoContent(http.StatusOK)
|
|
|
|
}
|