feat(utils): add file utility functions for MD5 hashing, file ID generation, and upload directory management

This commit is contained in:
keven1024
2026-02-27 12:08:13 +08:00
parent 22637bcf6e
commit ed7ac4e657
5 changed files with 97 additions and 13 deletions

View File

@@ -19,37 +19,37 @@ func GenStandardFile(filePath string, mimeType string) (GenStandardFileReturn, e
if _, err := os.Stat(filePath); os.IsNotExist(err) {
return GenStandardFileReturn{}, errors.New("文件不存在")
}
compressedFile, err := os.Open(filePath)
file, err := os.Open(filePath)
if err != nil {
return GenStandardFileReturn{}, err
}
defer compressedFile.Close()
defer file.Close()
compressedFileInfo, err := compressedFile.Stat()
fileInfo, err := file.Stat()
if err != nil {
return GenStandardFileReturn{}, err
}
compressedFileSize := compressedFileInfo.Size()
fileSize := fileInfo.Size()
compressedFileHash, err := utils.GetFileMd5(compressedFile)
fileHash, err := utils.GetFileMd5(file)
if err != nil {
return GenStandardFileReturn{}, err
}
compressedFileId := utils.GetFileId(compressedFileHash, compressedFileSize)
fileId := utils.GetFileId(fileHash, fileSize)
uploadPath, err := utils.GetUploadDirPath()
if err != nil {
return GenStandardFileReturn{}, err
}
newPath := filepath.Join(uploadPath, compressedFileId)
newPath := filepath.Join(uploadPath, fileId)
if err := os.Rename(filePath, newPath); err != nil {
return GenStandardFileReturn{}, err
}
models.SetRedisFileInfo(compressedFileId, models.RedisFileInfo{
models.SetRedisFileInfo(fileId, models.RedisFileInfo{
FileInfo: models.FileInfo{
FileSize: compressedFileSize,
FileHash: compressedFileHash,
FileSize: fileSize,
FileHash: fileHash,
MimeType: mimeType,
},
FileType: models.FileTypeUpload,
@@ -57,10 +57,10 @@ func GenStandardFile(filePath string, mimeType string) (GenStandardFileReturn, e
})
return GenStandardFileReturn{
FileId: compressedFileId,
FileId: fileId,
FileInfo: models.FileInfo{
FileSize: compressedFileSize,
FileHash: compressedFileHash,
FileSize: fileSize,
FileHash: fileHash,
MimeType: mimeType,
},
}, nil

View File

@@ -1,5 +1,12 @@
package tasks
import "errors"
var (
ErrNotFoundFile = errors.New("NotFoundFile")
ErrUnknown = errors.New("Unknown")
)
type BaseFileTaskPayload struct {
FileId string `json:"file_id"`
}
@@ -11,3 +18,8 @@ type RemoveFileTaskPayload struct {
type CompressImageTaskPayload struct {
BaseFileTaskPayload
}
type ConvertImageTaskPayload struct {
BaseFileTaskPayload
TargetExt string `json:"target_ext"`
}