This commit is contained in:
2023-09-15 14:11:08 +08:00
parent 9d63b7630f
commit 318b7e8a0a
5 changed files with 260 additions and 20 deletions

View File

@@ -6,7 +6,6 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"mime/multipart"
"net/http"
"os"
@@ -32,14 +31,14 @@ func GetPostFile(w http.ResponseWriter, r *http.Request) {
//获取文件流,第三个返回值是错误对象
file, header, _ := r.FormFile("file")
//读取文件流为[]byte
b, err := ioutil.ReadAll(file)
b, err := io.ReadAll(file)
if err != nil {
log.Error("Failed to ReadAll:", err)
ResponseInternalServerError500ProcessError(w, err)
return
}
//把文件保存到指定位置
err = ioutil.WriteFile("./upload/test.zip", b, 0644)
err = os.WriteFile("./upload/test.zip", b, 0644)
if err != nil {
log.Error("Failed to WriteFile:", err)
ResponseInternalServerError500ProcessError(w, err)
@@ -112,7 +111,7 @@ func HandleUploadFile(r *http.Request, path, newFileName string) (string, error)
log.Debugf("FileName=[%s], FormName=[%s]", part.FileName(), part.FormName())
if part.FileName() == "" { // this is FormData
data, _ := ioutil.ReadAll(part)
data, _ := io.ReadAll(part)
log.Debugf("FormData=[%s]", string(data))
} else { // This is FileData
@@ -146,6 +145,77 @@ func HandleUploadFile(r *http.Request, path, newFileName string) (string, error)
return fileName, nil
}
type UploadMultiFileData struct {
SoftwareFileName string `json:"softwareFileName"`
CmsFileName string `json:"cmsFileName"`
Datas map[string][]string `json:"datas"`
}
func HandleUploadMultiFile(r *http.Request, path, newFileName string) (*UploadMultiFileData, error) {
fileData := new(UploadMultiFileData)
// 解析multipart/form-data请求
err := r.ParseMultipartForm(100 << 20) // 100MB
if err != nil {
return fileData, err
}
// 获取文件和数据
softwareFile := r.MultipartForm.File["file"]
cmsFile := r.MultipartForm.File["cms"]
fileData.Datas = r.MultipartForm.Value
// 处理文件
if len(softwareFile) > 0 {
file := softwareFile[0]
// 打开文件
f, err := file.Open()
if err != nil {
return fileData, err
}
defer f.Close()
// 创建本地文件
dst, err := os.Create(path + "/" + file.Filename)
if err != nil {
return fileData, err
}
defer dst.Close()
fileData.SoftwareFileName = file.Filename
// 将文件内容拷贝到本地文件
_, err = io.Copy(dst, f)
if err != nil {
return fileData, err
}
}
// 处理文件
if len(cmsFile) > 0 {
file := cmsFile[0]
// 打开文件
f, err := file.Open()
if err != nil {
return fileData, err
}
defer f.Close()
// 创建本地文件
dst, err := os.Create(path + "/" + file.Filename)
if err != nil {
return fileData, err
}
defer dst.Close()
fileData.CmsFileName = file.Filename
// 将文件内容拷贝到本地文件
_, err = io.Copy(dst, f)
if err != nil {
return fileData, err
}
}
return fileData, nil
}
func HandleUploadFormFile(w http.ResponseWriter, r *http.Request) {
r.ParseMultipartForm(32 << 20)
//mForm := r.MultipartForm
@@ -245,9 +315,6 @@ func PostFileHandler(w http.ResponseWriter, r *http.Request) {
http.Error(w, "分片文件"+fileName+chunkNumber+"上传成功", http.StatusOK)
}
}
return
http.NotFound(w, r)
}
// 上传内容大小限制