|
@@ -1,9 +1,7 @@
|
|
|
package src
|
|
package src
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "encoding/json"
|
|
|
|
|
"errors"
|
|
"errors"
|
|
|
- "fmt"
|
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/sirupsen/logrus"
|
|
|
"io"
|
|
"io"
|
|
|
"mime/multipart"
|
|
"mime/multipart"
|
|
@@ -20,7 +18,7 @@ import (
|
|
|
var (
|
|
var (
|
|
|
dir = os.Getenv("FILE_PATH") // 文件根路径
|
|
dir = os.Getenv("FILE_PATH") // 文件根路径
|
|
|
title = os.Getenv("TITLE") // 标题
|
|
title = os.Getenv("TITLE") // 标题
|
|
|
- isUpload = os.Getenv("IS_UPDATE") == "true" // 是否开启上传
|
|
|
|
|
|
|
+ isUpload = os.Getenv("IS_UPLOAD") == "true" // 是否开启上传
|
|
|
isDelete = os.Getenv("IS_DELETE") == "true" // 是否开启删除
|
|
isDelete = os.Getenv("IS_DELETE") == "true" // 是否开启删除
|
|
|
isMkdir = os.Getenv("IS_MKDIR") == "true" // 是否开启创建文件夹
|
|
isMkdir = os.Getenv("IS_MKDIR") == "true" // 是否开启创建文件夹
|
|
|
showHidden = os.Getenv("SHOW_HIDDEN") == "" // 是否默认显示隐藏文件
|
|
showHidden = os.Getenv("SHOW_HIDDEN") == "" // 是否默认显示隐藏文件
|
|
@@ -35,7 +33,7 @@ func HandleBaseRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
_, err = w.Write(resultError(-3, err))
|
|
_, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("基本查询发生异常,异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("基本查询发生异常,异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
@@ -55,7 +53,8 @@ func HandleBaseRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
// 返回基础设置数据
|
|
// 返回基础设置数据
|
|
|
_, err = w.Write(resultSuccess(resultData))
|
|
_, err = w.Write(resultSuccess(resultData))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("基本查询发生异常,异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("基本查询发生异常,异常为: ", err)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
logrus.Info("基本查询方法执行成功!")
|
|
logrus.Info("基本查询方法执行成功!")
|
|
|
}
|
|
}
|
|
@@ -72,7 +71,7 @@ func HandleLoginRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
_, err = w.Write(resultError(-3, err))
|
|
_, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("登录发生异常,异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("登录发生异常,异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
@@ -81,9 +80,10 @@ func HandleLoginRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
http.SetCookie(w, cookie)
|
|
http.SetCookie(w, cookie)
|
|
|
_, err = w.Write(resultSuccess(now.Unix()))
|
|
_, err = w.Write(resultSuccess(now.Unix()))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("登录发生异常,异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("登录发生异常,异常为: ", err)
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
- logrus.Error("登录方法执行成功!")
|
|
|
|
|
|
|
+ logrus.Info("登录方法执行成功!")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// HandleQueryRequest 查询文件
|
|
// HandleQueryRequest 查询文件
|
|
@@ -94,101 +94,107 @@ func HandleQueryRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
_, err = w.Write(resultError(-3, err))
|
|
_, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("文件查询发生异常, 异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取参数, 初始化目录
|
|
// 获取参数, 初始化目录
|
|
|
- localDir := dir
|
|
|
|
|
|
|
+ localDir := strings.ReplaceAll(dir, "\\", "/")
|
|
|
query := r.URL.Query()
|
|
query := r.URL.Query()
|
|
|
filePath := query.Get("filePath")
|
|
filePath := query.Get("filePath")
|
|
|
localDir = filepath.Join(localDir, filePath)
|
|
localDir = filepath.Join(localDir, filePath)
|
|
|
showHidden, _ = strconv.ParseBool(query.Get("showHidden")) // 是否显示隐藏文件
|
|
showHidden, _ = strconv.ParseBool(query.Get("showHidden")) // 是否显示隐藏文件
|
|
|
showDirSize, _ = strconv.ParseBool(query.Get("showDirSize")) // 是否计算文件夹大小
|
|
showDirSize, _ = strconv.ParseBool(query.Get("showDirSize")) // 是否计算文件夹大小
|
|
|
|
|
|
|
|
- // 打开目录
|
|
|
|
|
|
|
+ // 打开目录,读入对象
|
|
|
d, err := os.Open(localDir)
|
|
d, err := os.Open(localDir)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("文件查询发生异常, 异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
_, err = w.Write(resultError(-3, err))
|
|
_, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- logrus.Error("文件查询发生异常, 异常为: ", err.Error())
|
|
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
defer func(d *os.File) {
|
|
defer func(d *os.File) {
|
|
|
- err := d.Close()
|
|
|
|
|
|
|
+ err = d.Close()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
-
|
|
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
}(d)
|
|
}(d)
|
|
|
|
|
+ logrus.Info("文件查询, 目录读取成功!")
|
|
|
|
|
|
|
|
// 读取当前目录下的文件和子目录
|
|
// 读取当前目录下的文件和子目录
|
|
|
- files, fileErr := d.ReadDir(0)
|
|
|
|
|
- if fileErr != nil {
|
|
|
|
|
- fmt.Println("读取文件异常:", fileErr)
|
|
|
|
|
- _, err := w.Write(resultError(-3, fileErr))
|
|
|
|
|
|
|
+ files, err := d.ReadDir(0)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
|
|
+ _, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ logrus.Info("文件查询, 文件及子目录读取成功!")
|
|
|
|
|
|
|
|
// 组织返回的json
|
|
// 组织返回的json
|
|
|
- var filesList []map[string]string
|
|
|
|
|
|
|
+ var filesInfos []map[string]string
|
|
|
for _, file := range files {
|
|
for _, file := range files {
|
|
|
- info, err := file.Info()
|
|
|
|
|
|
|
+ var info os.FileInfo
|
|
|
|
|
+ info, err = file.Info()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
if !showHidden && len(info.Name()) > 0 && info.Name()[0] == '.' {
|
|
if !showHidden && len(info.Name()) > 0 && info.Name()[0] == '.' {
|
|
|
continue
|
|
continue
|
|
|
}
|
|
}
|
|
|
- files := make(map[string]string)
|
|
|
|
|
- files["path"] = filePath
|
|
|
|
|
- files["name"] = info.Name()
|
|
|
|
|
- files["fileType"] = ""
|
|
|
|
|
|
|
+ fileInfo := make(map[string]string)
|
|
|
|
|
+ fileInfo["path"] = filePath
|
|
|
|
|
+ fileInfo["name"] = info.Name()
|
|
|
|
|
+ fileInfo["fileType"] = ""
|
|
|
fileNameSplit := strings.Split(info.Name(), ".")
|
|
fileNameSplit := strings.Split(info.Name(), ".")
|
|
|
if len(fileNameSplit) > 1 {
|
|
if len(fileNameSplit) > 1 {
|
|
|
- files["fileType"] = fileNameSplit[len(fileNameSplit)-1]
|
|
|
|
|
|
|
+ fileInfo["fileType"] = fileNameSplit[len(fileNameSplit)-1]
|
|
|
}
|
|
}
|
|
|
- files["size"] = formatSize(float64(info.Size()), 0)
|
|
|
|
|
- files["modified"] = info.ModTime().Format("2006-01-02 15:04:05")
|
|
|
|
|
- files["type"] = "file"
|
|
|
|
|
|
|
+ fileInfo["size"] = formatSize(float64(info.Size()), 0)
|
|
|
|
|
+ fileInfo["modified"] = info.ModTime().Format(time.DateTime)
|
|
|
|
|
+ fileInfo["type"] = "file"
|
|
|
if info.IsDir() {
|
|
if info.IsDir() {
|
|
|
- files["fileType"] = "folder"
|
|
|
|
|
- dirPath := filepath.Join(dir, file.Name())
|
|
|
|
|
- files["type"] = "dir"
|
|
|
|
|
- files["size"] = ""
|
|
|
|
|
|
|
+ fileInfo["fileType"] = "folder"
|
|
|
|
|
+ dirPath := filepath.Join(localDir, file.Name())
|
|
|
|
|
+ fileInfo["type"] = "dir"
|
|
|
|
|
+ fileInfo["size"] = ""
|
|
|
if showDirSize {
|
|
if showDirSize {
|
|
|
- size, err := dirSize(dirPath)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- fmt.Println("计算目录大小异常:", err)
|
|
|
|
|
- }
|
|
|
|
|
- files["size"] = formatSize(float64(size), 0)
|
|
|
|
|
|
|
+ var size int64
|
|
|
|
|
+ size = dirSize(dirPath)
|
|
|
|
|
+ fileInfo["size"] = formatSize(float64(size), 0)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- filesList = append(filesList, files)
|
|
|
|
|
- sort.Slice(filesList, func(i, j int) bool {
|
|
|
|
|
- return filesList[j]["type"] == "file"
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ filesInfos = append(filesInfos, fileInfo)
|
|
|
}
|
|
}
|
|
|
|
|
+ sort.Slice(filesInfos, func(i, j int) bool {
|
|
|
|
|
+ return filesInfos[j]["type"] == "file"
|
|
|
|
|
+ })
|
|
|
|
|
+ logrus.Info("文件查询, 文件信息组织成功!")
|
|
|
|
|
|
|
|
- // 设置 Content-Type 为 application/json
|
|
|
|
|
|
|
+ // 设置 Content-Type 为 application/json 并返回文件信息数据
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
-
|
|
|
|
|
- // 返回 JSON 数据
|
|
|
|
|
- _, err = w.Write(resultSuccess(filesList))
|
|
|
|
|
|
|
+ _, err = w.Write(resultSuccess(filesInfos))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
|
|
+ logrus.Error("文件查询发生异常, 异常为: ", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ logrus.Info("文件查询方法执行成功!")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// HandleDownloadRequest 下载文件
|
|
// HandleDownloadRequest 下载文件
|
|
|
func HandleDownloadRequest(w http.ResponseWriter, r *http.Request) {
|
|
func HandleDownloadRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
+ // 获取参数
|
|
|
query := r.URL.Path
|
|
query := r.URL.Path
|
|
|
reqPthSplit := strings.Split(strings.TrimLeft(query, "/"), "/")
|
|
reqPthSplit := strings.Split(strings.TrimLeft(query, "/"), "/")
|
|
|
|
|
+
|
|
|
|
|
+ // 切割出文件名并写入返回头里
|
|
|
fileName := reqPthSplit[len(reqPthSplit)-1]
|
|
fileName := reqPthSplit[len(reqPthSplit)-1]
|
|
|
reName := strings.ReplaceAll(fileName, "pkgDir_", "")
|
|
reName := strings.ReplaceAll(fileName, "pkgDir_", "")
|
|
|
if reName == ".zip" {
|
|
if reName == ".zip" {
|
|
@@ -196,27 +202,27 @@ func HandleDownloadRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
}
|
|
}
|
|
|
w.Header().Set("Content-Disposition", "attachment; filename="+reName)
|
|
w.Header().Set("Content-Disposition", "attachment; filename="+reName)
|
|
|
|
|
|
|
|
- // 认证
|
|
|
|
|
- authCode := reqPthSplit[1]
|
|
|
|
|
|
|
+ // 认证并处理路径
|
|
|
|
|
+ pathCode := reqPthSplit[1]
|
|
|
var pathList []string
|
|
var pathList []string
|
|
|
- tag, msg := authToPath(authCode)
|
|
|
|
|
- // 第一个元素是url,最后一个是文件名
|
|
|
|
|
- pathList = append(reqPthSplit[2 : len(reqPthSplit)-1])
|
|
|
|
|
|
|
+ tag, msg := authToPath(pathCode)
|
|
|
|
|
+ pathList = append(reqPthSplit[2 : len(reqPthSplit)-1]) // 第一个元素是url,最后一个是文件名
|
|
|
if msg != "" {
|
|
if msg != "" {
|
|
|
- fmt.Println(msg)
|
|
|
|
|
if !tag {
|
|
if !tag {
|
|
|
- http.Error(w, msg, 500)
|
|
|
|
|
|
|
+ logrus.Error("下载文件发生异常, 异常为: ", msg)
|
|
|
|
|
+ http.Error(w, msg, http.StatusInternalServerError)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- // 第二个元素是auth
|
|
|
|
|
- pathList = append(reqPthSplit[2 : len(reqPthSplit)-1])
|
|
|
|
|
|
|
+ pathList = append(reqPthSplit[2 : len(reqPthSplit)-1]) // 第二个元素是auth
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
filePath := path.Join(pathList...)
|
|
filePath := path.Join(pathList...)
|
|
|
|
|
+ localDir := strings.ReplaceAll(dir, "\\", "/")
|
|
|
|
|
+ logrus.Info("下载文件, 路径处理完成!")
|
|
|
|
|
+
|
|
|
// 处理文件夹的情况
|
|
// 处理文件夹的情况
|
|
|
if strings.HasPrefix(fileName, "pkgDir_") {
|
|
if strings.HasPrefix(fileName, "pkgDir_") {
|
|
|
fileName = strings.ReplaceAll(fileName, "pkgDir_", "")
|
|
fileName = strings.ReplaceAll(fileName, "pkgDir_", "")
|
|
|
- dirPath := path.Join(dir, filePath, strings.ReplaceAll(fileName, ".zip", ""))
|
|
|
|
|
|
|
+ dirPath := path.Join(localDir, filePath, strings.ReplaceAll(fileName, ".zip", ""))
|
|
|
if fileName == ".zip" {
|
|
if fileName == ".zip" {
|
|
|
fileName = "root" + fileName
|
|
fileName = "root" + fileName
|
|
|
}
|
|
}
|
|
@@ -224,220 +230,209 @@ func HandleDownloadRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
defer func(name string) {
|
|
defer func(name string) {
|
|
|
err := os.Remove(name)
|
|
err := os.Remove(name)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
-
|
|
|
|
|
|
|
+ logrus.Error("下载文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
}(fileName)
|
|
}(fileName)
|
|
|
|
|
|
|
|
// 打开 zip 文件
|
|
// 打开 zip 文件
|
|
|
file, err := os.Open(fileName)
|
|
file, err := os.Open(fileName)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
|
|
+ logrus.Error("下载文件发生异常, 异常为: ", err)
|
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
defer func(file *os.File) {
|
|
defer func(file *os.File) {
|
|
|
- err := file.Close()
|
|
|
|
|
|
|
+ err = file.Close()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
-
|
|
|
|
|
|
|
+ logrus.Error("下载文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
}(file)
|
|
}(file)
|
|
|
|
|
+ logrus.Info("下载文件, 文件夹ZIP生成成功!")
|
|
|
|
|
|
|
|
- // 设置响应头
|
|
|
|
|
|
|
+ // 设置响应头并将 zip 文件内容复制到响应体中
|
|
|
w.Header().Set("Content-Type", "application/zip")
|
|
w.Header().Set("Content-Type", "application/zip")
|
|
|
-
|
|
|
|
|
- // 将 zip 文件内容复制到响应体中
|
|
|
|
|
_, err = io.Copy(w, file)
|
|
_, err = io.Copy(w, file)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("下载文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
|
|
+ logrus.Info("下载文件方法执行成功!")
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 加载文件
|
|
|
|
|
- downloadFile := filepath.Join(dir, filePath, fileName)
|
|
|
|
|
|
|
+ // 处理正常的文件
|
|
|
|
|
+ downloadFile := filepath.Join(localDir, filePath, fileName)
|
|
|
w.Header().Set("Content-Type", "application/octet-stream")
|
|
w.Header().Set("Content-Type", "application/octet-stream")
|
|
|
http.ServeFile(w, r, downloadFile)
|
|
http.ServeFile(w, r, downloadFile)
|
|
|
|
|
+ logrus.Info("下载文件方法执行成功!")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// HandleRemoveRequest 删除文件
|
|
// HandleRemoveRequest 删除文件
|
|
|
func HandleRemoveRequest(w http.ResponseWriter, r *http.Request) {
|
|
func HandleRemoveRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
- cookie, err := r.Cookie("session_id")
|
|
|
|
|
// 认证
|
|
// 认证
|
|
|
- authErr := authToCookie(cookie)
|
|
|
|
|
- if authErr != nil {
|
|
|
|
|
- fmt.Println(authErr)
|
|
|
|
|
- _, err := w.Write(resultError(-3, authErr))
|
|
|
|
|
|
|
+ cookie, err := r.Cookie("session_id")
|
|
|
|
|
+ err = authToCookie(cookie)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ _, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("删除文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
// 功能是否开启
|
|
// 功能是否开启
|
|
|
if !isDelete {
|
|
if !isDelete {
|
|
|
|
|
+ logrus.Error("删除文件非法访问, 功能未开启!")
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
- _, err := w.Write(resultError(-2, errors.New("功能未开启! ")))
|
|
|
|
|
|
|
+ _, err = w.Write(resultError(-2, errors.New("功能未开启! ")))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("删除文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 初始化目录,获取参数
|
|
|
|
|
- dir := dir
|
|
|
|
|
|
|
+ // 获取参数并初始化目录
|
|
|
|
|
+ localDir := strings.ReplaceAll(dir, "\\", "/")
|
|
|
query := r.URL.Query()
|
|
query := r.URL.Query()
|
|
|
-
|
|
|
|
|
- // 获取文件路径
|
|
|
|
|
filePath := query.Get("filePath")
|
|
filePath := query.Get("filePath")
|
|
|
-
|
|
|
|
|
- // 获取文件名
|
|
|
|
|
fileName := query.Get("fileName")
|
|
fileName := query.Get("fileName")
|
|
|
|
|
|
|
|
// 尝试删除文件
|
|
// 尝试删除文件
|
|
|
- err = os.Remove(path.Join(dir, filePath, fileName))
|
|
|
|
|
|
|
+ err = os.Remove(path.Join(localDir, filePath, fileName))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("删除文件异常:", err)
|
|
|
|
|
- _, err := w.Write(resultError(-1, err))
|
|
|
|
|
|
|
+ logrus.Error("删除文件发生异常, 异常为: ", err)
|
|
|
|
|
+ _, err = w.Write(resultError(-1, errors.New(strings.ReplaceAll(err.Error(), dir, ""))))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("删除文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- fmt.Println("删除成功!")
|
|
|
|
|
|
|
+ logrus.Info("删除文件, 文件删除成功!")
|
|
|
|
|
|
|
|
- // 设置 Content-Type 为 application/json
|
|
|
|
|
|
|
+ // 设置 Content-Type 为 application/json 并返回成功的消息
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
-
|
|
|
|
|
- // 返回 JSON 数据
|
|
|
|
|
_, err = w.Write(resultSuccess(nil))
|
|
_, err = w.Write(resultSuccess(nil))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logrus.Error("删除文件发生异常, 异常为: ", err)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ logrus.Info("删除文件方法执行成功!")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// HandleUploadRequest 上传文件
|
|
// HandleUploadRequest 上传文件
|
|
|
func HandleUploadRequest(w http.ResponseWriter, r *http.Request) {
|
|
func HandleUploadRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
- cookie, err := r.Cookie("session_id")
|
|
|
|
|
- // 获取cookie
|
|
|
|
|
- if cookie == nil {
|
|
|
|
|
- _, err = w.Write(resultError(-3, errors.New("未验证, 请先进行验证! ")))
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
// 认证
|
|
// 认证
|
|
|
- authErr := authToCookie(cookie)
|
|
|
|
|
- if authErr != nil {
|
|
|
|
|
- fmt.Println(authErr)
|
|
|
|
|
- _, err := w.Write(resultError(-3, authErr))
|
|
|
|
|
|
|
+ cookie, err := r.Cookie("session_id")
|
|
|
|
|
+ err = authToCookie(cookie)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ _, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
// 功能是否开启
|
|
// 功能是否开启
|
|
|
if !isUpload {
|
|
if !isUpload {
|
|
|
|
|
+ logrus.Error("上传文件非法访问, 功能未开启!")
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
- _, err := w.Write(resultError(-2, errors.New("功能未开启! ")))
|
|
|
|
|
|
|
+ _, err = w.Write(resultError(-2, errors.New("功能未开启! ")))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常,异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
if r.Method == "POST" {
|
|
if r.Method == "POST" {
|
|
|
- // 解析表单数据
|
|
|
|
|
- err := r.ParseMultipartForm(10 << 20) // 最大10MB
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- fmt.Println(err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // 获取文件及参数
|
|
|
filePath := r.FormValue("filePath")
|
|
filePath := r.FormValue("filePath")
|
|
|
-
|
|
|
|
|
- // 获取文件句柄和文件头信息
|
|
|
|
|
- file, handler, err := r.FormFile("file")
|
|
|
|
|
|
|
+ var (
|
|
|
|
|
+ file multipart.File
|
|
|
|
|
+ handler *multipart.FileHeader
|
|
|
|
|
+ )
|
|
|
|
|
+ file, handler, err = r.FormFile("file")
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("Error Retrieving the File")
|
|
|
|
|
- fmt.Println(err)
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常, 异常为: ", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
defer func(file multipart.File) {
|
|
defer func(file multipart.File) {
|
|
|
- err := file.Close()
|
|
|
|
|
|
|
+ err = file.Close()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
-
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
}(file)
|
|
}(file)
|
|
|
-
|
|
|
|
|
- fmt.Printf("Uploaded File: %+v\n", handler.Filename)
|
|
|
|
|
- fmt.Printf("File Size: %+v\n", handler.Size)
|
|
|
|
|
- fmt.Printf("MIME Header: %+v\n", handler.Header)
|
|
|
|
|
|
|
+ logrus.Info("上传文件, 文件获取成功!")
|
|
|
|
|
|
|
|
// 创建目标文件
|
|
// 创建目标文件
|
|
|
uploadFileName := filepath.Join(dir, filePath, handler.Filename)
|
|
uploadFileName := filepath.Join(dir, filePath, handler.Filename)
|
|
|
- destFile, err := os.Create(uploadFileName)
|
|
|
|
|
|
|
+ var destFile *os.File
|
|
|
|
|
+ destFile, err = os.Create(uploadFileName)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常, 异常为: ", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
defer func(destFile *os.File) {
|
|
defer func(destFile *os.File) {
|
|
|
- err := destFile.Close()
|
|
|
|
|
|
|
+ err = destFile.Close()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
-
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
}(destFile)
|
|
}(destFile)
|
|
|
|
|
+ logrus.Info("上传文件, 文件创建成功!")
|
|
|
|
|
|
|
|
//将文件内容拷贝到目标文件
|
|
//将文件内容拷贝到目标文件
|
|
|
_, err = io.Copy(destFile, file)
|
|
_, err = io.Copy(destFile, file)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println(err)
|
|
|
|
|
|
|
+ logrus.Error("上传文件发生异常, 异常为: ", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ logrus.Info("上传文件方法执行成功!")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// HandleMkdirRequest 创建文件夹
|
|
// HandleMkdirRequest 创建文件夹
|
|
|
func HandleMkdirRequest(w http.ResponseWriter, r *http.Request) {
|
|
func HandleMkdirRequest(w http.ResponseWriter, r *http.Request) {
|
|
|
- cookie, err := r.Cookie("session_id")
|
|
|
|
|
- // 获取cookie
|
|
|
|
|
- if cookie == nil {
|
|
|
|
|
- _, err := w.Write(resultError(-3, errors.New("未验证, 请先进行验证! ")))
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
// 认证
|
|
// 认证
|
|
|
- authErr := authToCookie(cookie)
|
|
|
|
|
- if authErr != nil {
|
|
|
|
|
- fmt.Println(authErr)
|
|
|
|
|
- _, err := w.Write(resultError(-3, authErr))
|
|
|
|
|
|
|
+ cookie, err := r.Cookie("session_id")
|
|
|
|
|
+ err = authToCookie(cookie)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ _, err = w.Write(resultError(-3, err))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return
|
|
|
|
|
|
|
+ logrus.Error("创建文件夹发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
// 判断功能是否开启
|
|
// 判断功能是否开启
|
|
|
if !isMkdir {
|
|
if !isMkdir {
|
|
|
|
|
+ logrus.Error("上传文件非法访问, 功能未开启!")
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
- _, err := w.Write(resultError(-2, errors.New("功能未开启! ")))
|
|
|
|
|
|
|
+ _, err = w.Write(resultError(-2, errors.New("功能未开启! ")))
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("出现异常: ", err)
|
|
|
|
|
|
|
+ logrus.Error("创建文件夹发生异常, 异常为: ", err)
|
|
|
}
|
|
}
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- result := make(map[string]string)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // 获取参数并组织返回参数
|
|
|
query := r.URL.Query()
|
|
query := r.URL.Query()
|
|
|
dirPath := query.Get("dirPath")
|
|
dirPath := query.Get("dirPath")
|
|
|
|
|
+
|
|
|
// 创建目录
|
|
// 创建目录
|
|
|
mkdir := path.Join(dir, dirPath)
|
|
mkdir := path.Join(dir, dirPath)
|
|
|
err = os.Mkdir(mkdir, 0755)
|
|
err = os.Mkdir(mkdir, 0755)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- fmt.Println("Error creating directory:", err)
|
|
|
|
|
|
|
+ logrus.Error("创建文件夹发生异常, 异常为: ", err)
|
|
|
|
|
+ _, err = w.Write(resultError(-2, err))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logrus.Error("创建文件夹发生异常, 异常为: ", err)
|
|
|
|
|
+ }
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- result["code"] = "1"
|
|
|
|
|
|
|
+
|
|
|
// 设置 Content-Type 为 application/json
|
|
// 设置 Content-Type 为 application/json
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
|
-
|
|
|
|
|
- resultJson, err := json.Marshal(result)
|
|
|
|
|
-
|
|
|
|
|
- // 返回 JSON 数据
|
|
|
|
|
- _, err = w.Write(resultJson)
|
|
|
|
|
|
|
+ _, err = w.Write(resultSuccess(nil))
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ logrus.Error("创建文件夹发生异常, 异常为: ", err)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ logrus.Info("创建文件夹方法执行成功!")
|
|
|
}
|
|
}
|