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, "文件删除成功") }