上传文件
This commit is contained in:
@@ -242,6 +242,61 @@ func ModelItemPatch(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// 判断数据类型是否二进制文件
|
||||
if r.Header.Get("Content-Type") == "multipart/form-data" {
|
||||
// 解析表单取出图片文件 (32MB)
|
||||
if err := r.ParseMultipartForm(32 << 20); err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 检查文件目录是否存在
|
||||
os.MkdirAll(fmt.Sprintf("data/models/%d", model.ID), 0777)
|
||||
|
||||
// 上传文件
|
||||
for _, headers := range r.MultipartForm.File {
|
||||
for _, header := range headers {
|
||||
// 打开本地文件
|
||||
file, err := os.Create(fmt.Sprintf("data/models/%d/%s", model.ID, header.Filename))
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
// 打开上传文件
|
||||
f, err := header.Open()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 拷贝文件到本地
|
||||
_, err = io.Copy(file, f)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 更新模型
|
||||
model.Preview = fmt.Sprintf("data/models/%d/%s", model.ID, header.Filename)
|
||||
if err := configs.ORMDB().Save(&model).Error; err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 返回更新后的数据
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
w.Write(utils.ToJSON(model))
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 判断数据类型是否JSON
|
||||
if r.Header.Get("Content-Type") == "application/json" {
|
||||
|
||||
// 取出更新数据
|
||||
var model_new models.Model
|
||||
body, err := ioutil.ReadAll(r.Body)
|
||||
@@ -307,6 +362,9 @@ func ModelItemPatch(w http.ResponseWriter, r *http.Request) {
|
||||
// 返回更新後的數據
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
w.Write(utils.ToJSON(model))
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 刪除模型
|
||||
|
Reference in New Issue
Block a user