You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
7.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package web
import (
"fmt"
"goskeleton/app/global/consts"
"goskeleton/app/service/file"
"goskeleton/app/utils/response"
"os"
"github.com/gin-gonic/gin"
)
type File struct {
}
// 创建文件
func (f *File) Creat(context *gin.Context) {
//从context获得路径和文件名并拼接获得最终文件路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
file_Path := context.GetString(consts.ValidatorPrefix + "file_path")
file_Name := context.GetString(consts.ValidatorPrefix + "file_name")
final_Path := fmt.Sprintf("%s/%s", file_Path, file_Name)
//file, err := os.Create(final_Path)
if err := file.CreateFile(user_name, final_Path); err != nil {
response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg, err.Error())
return
}
// 文件创建成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg, "文件创建成功")
}
// 创建文件夹
func (f *File) FolderCreat(context *gin.Context) {
//从context获得路径和文件夹名并拼接获得最终文件夹路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
folder_Path := context.GetString(consts.ValidatorPrefix + "folder_path")
folder_Name := context.GetString(consts.ValidatorPrefix + "folder_name")
final_Path := fmt.Sprintf("%s/%s", folder_Path, folder_Name)
if err := file.CreateFolder(user_name, final_Path); err != nil {
response.Fail(context, consts.CurdCreatFailCode, consts.CurdCreatFailMsg, err.Error())
return
}
// 文件创建成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg, "文件夹创建成功")
}
// 打开文件
func (f *File) Get(context *gin.Context) {
//从context获得路径和文件名并拼接获得最终文件路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
file_Path := context.GetString(consts.ValidatorPrefix + "file_path")
file_Name := context.GetString(consts.ValidatorPrefix + "file_name")
final_Path := fmt.Sprintf("%s/%s", file_Path, file_Name)
fileContentBase64, err := file.GetFile(user_name, final_Path)
if err != nil {
// 根据不同的错误类型,返回更具体、合适的错误响应给客户端
switch err := err.(type) {
case *os.PathError:
//文件路径错误
response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error())
default:
if err == os.ErrNotExist {
//文件不存在错误
response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error())
}
}
return
}
// 文件获取成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg+" - "+"文件获取成功", fileContentBase64)
}
// 文件重命名
func (f *File) Rename(context *gin.Context) {
//从context获得路径和文件名并拼接获得最终文件路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
file_Path := context.GetString(consts.ValidatorPrefix + "file_path")
file_Name := context.GetString(consts.ValidatorPrefix + "file_name")
final_Path := fmt.Sprintf("%s/%s", file_Path, file_Name)
//old_Name := context.GetString(consts.ValidatorPrefix + "oldname")
new_Name := context.GetString(consts.ValidatorPrefix + "newname")
new_finalpath := fmt.Sprintf("%s/%s", file_Path, new_Name)
err := file.FileRename(user_name, final_Path, new_finalpath)
if err != nil {
// 根据不同的错误类型,返回更具体、合适的错误响应给客户端
switch err := err.(type) {
case *os.PathError:
//文件路径错误
response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error())
default:
if err == os.ErrNotExist {
//文件不存在错误
response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error())
}
}
return
}
// 文件重命名成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg, "文件重命名成功")
}
// 文件移动
func (f *File) Move(context *gin.Context) {
//从context获得路径和文件名并拼接获得最终文件路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
file_Path := context.GetString(consts.ValidatorPrefix + "file_path")
file_Name := context.GetString(consts.ValidatorPrefix + "file_name")
final_Path := fmt.Sprintf("%s/%s", file_Path, file_Name)
//old_Name := context.GetString(consts.ValidatorPrefix + "oldname")
new_Path := context.GetString(consts.ValidatorPrefix + "newpath")
new_finalpath := fmt.Sprintf("%s/%s", new_Path, file_Name)
err := file.FileMove(user_name, final_Path, new_finalpath)
if err != nil {
// 根据不同的错误类型,返回更具体、合适的错误响应给客户端
switch err := err.(type) {
case *os.PathError:
//文件路径错误
response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error())
default:
if err == os.ErrNotExist {
//文件不存在错误
response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error())
}
}
return
}
// 文件移动成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg, "文件移动成功")
}
// 文件保存
func (f *File) Save(context *gin.Context) {
//从context获得路径和文件名并拼接获得最终文件路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
Save_path := context.GetString(consts.ValidatorPrefix + "save_path")
file_Name := context.GetString(consts.ValidatorPrefix + "file_name")
final_savePath := fmt.Sprintf("%s/%s", Save_path, file_Name)
fileDataBase64 := context.PostForm("file_data")
if fileDataBase64 == "" {
response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, nil)
return
}
err := file.FileSave(user_name, final_savePath, fileDataBase64)
if err != nil {
// 根据不同的错误类型,返回更具体、合适的错误响应给客户端
switch err := err.(type) {
case *os.PathError:
//文件路径错误
response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error())
default:
if err == os.ErrNotExist {
//文件不存在错误
response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error())
}
}
return
}
// 文件保存成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg, "文件保存成功")
}
// 文件删除
func (f *File) Delete(context *gin.Context) {
// 从context获得用户名、文件路径和文件名并拼接获得最终文件路径
user_name := context.GetString(consts.ValidatorPrefix + "user_name")
file_Path := context.GetString(consts.ValidatorPrefix + "file_path")
file_Name := context.GetString(consts.ValidatorPrefix + "file_name")
final_Path := fmt.Sprintf("%s/%s", file_Path, file_Name)
err := file.FileDe(user_name, final_Path)
if err != nil {
// 根据不同的错误类型,返回更具体、合适的错误响应给客户端
switch err := err.(type) {
case *os.PathError:
//文件路径错误
response.Fail(context, consts.CurdFilePathErrorCode, consts.CurdFilePathErrorMsg, err.Error())
default:
if err == os.ErrNotExist {
//文件不存在错误
response.Fail(context, consts.CurdFileNotExistCode, consts.CurdFileNotExistMsg, err.Error())
}
}
return
}
// 文件删除成功,返回成功响应给客户端
response.Success(context, consts.CurdStatusOkMsg, "文件删除成功")
}