feat(backend): add chunk size handling in file upload process and enhance file info model

This commit is contained in:
keven1024
2025-05-01 13:53:30 +08:00
parent f11c08fdd2
commit 7ea196f03e
2 changed files with 33 additions and 19 deletions

View File

@@ -29,21 +29,26 @@ func CreateUploadTask(c echo.Context) error {
if fileInfo != nil {
return utils.HTTPSuccessHandler(c, map[string]any{
"size": fileInfo.FileSize,
"mime_type": fileInfo.MimeType,
"hash": fileInfo.FileHash,
"type": fileInfo.FileType,
"expire": fileInfo.Expire,
"id": fileId,
"size": fileInfo.FileSize,
"mime_type": fileInfo.MimeType,
"hash": fileInfo.FileHash,
"type": fileInfo.FileType,
"expire": fileInfo.Expire,
"id": fileId,
"chunk_size": fileInfo.ChunkSize,
})
}
ChunkSize := int64(1 * 1024 * 1024)
if r.FileSize > 500*1024*1024 {
ChunkSize = r.FileSize / 500
}
newFileInfo := models.RedisFileInfo{
FileType: models.FileTypeInit,
FileInfo: models.FileInfo{
FileSize: r.FileSize,
MimeType: r.MimeType,
FileHash: r.FileHash,
FileSize: r.FileSize,
MimeType: r.MimeType,
FileHash: r.FileHash,
ChunkSize: ChunkSize,
},
CreatedAt: time.Now().Unix(),
Expire: 3600,
@@ -54,12 +59,13 @@ func CreateUploadTask(c echo.Context) error {
}
return utils.HTTPSuccessHandler(c, map[string]any{
"size": newFileInfo.FileSize,
"mime_type": newFileInfo.MimeType,
"hash": newFileInfo.FileHash,
"type": newFileInfo.FileType,
"expire": newFileInfo.Expire,
"id": fileId,
"size": newFileInfo.FileSize,
"mime_type": newFileInfo.MimeType,
"hash": newFileInfo.FileHash,
"type": newFileInfo.FileType,
"expire": newFileInfo.Expire,
"id": fileId,
"chunk_size": newFileInfo.ChunkSize,
})
}
@@ -91,6 +97,13 @@ func UploadFileSlice(c echo.Context) error {
if fileInfo.FileType != models.FileTypeInit {
return utils.HTTPErrorHandler(c, errors.New("上传任务状态错误"))
}
if r.FileIndex > ((fileInfo.FileSize / fileInfo.ChunkSize) + 1) {
return utils.HTTPErrorHandler(c, errors.New("文件切片索引错误"))
}
if r.FileSlice.Size > fileInfo.ChunkSize {
return utils.HTTPErrorHandler(c, errors.New("文件切片大小错误"))
}
// 打开文件
file, err := r.FileSlice.Open()

View File

@@ -9,9 +9,10 @@ import (
)
type FileInfo struct {
FileSize int64 `json:"size"`
MimeType string `json:"mime_type"`
FileHash string `json:"hash"`
FileSize int64 `json:"size"`
MimeType string `json:"mime_type"`
FileHash string `json:"hash"`
ChunkSize int64 `json:"chunk_size"`
}
type FileType string