服務器返回500,服務器內部錯誤,經過斷點測試,發現是接受前端圖片時,產生的錯誤;
檢查前端請求的表單數據,發現圖片的是file,后端代碼中使用了錯誤的字段來接收,修改后,測試通過
前端代碼
<!-- 產品圖片上傳 -->
<el-upload
class="upload-demo"
action="http://localhost:8082/api/Product/imageUpload"
:on-remove="handleRemove"
:data="ProductImageUploadData"
multiple
:limit="3"
>
<el-button size="small" type="primary">點擊上傳</el-button>
<div slot="tip" class="el-upload__tip">只能上傳jpg/png文件,且不超過500kb</div>
</el-upload>
后端代碼
func ProductImageUpload(c *gin.Context) {
ProductId := tools.StrToUInt(strings.TrimSpace(c.PostForm("ProductId")))
//數據驗證
ProductImage := &model.ProductImage{
ProductId: ProductId, //傳入的視頻鏈接分類
}
// 插入數據進入數據庫 :之前保存圖片
// **********獲取上傳的文件:圖片HeadImg:
//並把上傳的圖片的名稱改為當前的uuid存儲(保證圖片封面是唯一的),ulr+名稱寫入數據庫=HeadImgUrl
//HeadImgfile, err := c.FormFile("file")
HeadImgfile, err := c.FormFile("file")
//HeadImgfile, err := c.FormFile("HeadImgfile")
// 上傳的文件獲取后綴名 判斷類型是否正確 .jpg .png .gif .jpeg
extName := path.Ext(HeadImgfile.Filename)
allowExtMap := map[string]bool{
".jpg": true,
".png": true,
".gif": true,
".jpeg": true,
".bmp": true,
}
if _, ok := allowExtMap[extName]; !ok {
c.JSON(200, gin.H{
"data": gin.H{
//"err": err,
},
"meta": gin.H{
"msg": "上傳圖片的文件類型不合法",
"status": 400,
}})
//c.String(200, "上傳圖片的文件類型不合法")
return
}
//static\images\ProductImage
//創建圖片保存目錄 ./static/video/headimg/
dir := "./static/images/ProductImage/"
err = os.MkdirAll(dir, 0666)
if err != nil {
fmt.Println(err)
c.String(200, "MkdirAll失敗")
return
}
//讀取.ini里面的數據庫配置
config, err := ini.Load("./config/app.ini")
if err != nil {
//失敗
fmt.Printf("Fail to read file: %v", err)
os.Exit(1)
}
ipPort := config.Section("serve").Key("ipPort").String()
var url = "http://" + ipPort + "/static/images/ProductImage/"
// 4、生成文件名稱和文件保存的目錄 111111111111.jpeg
var ImageUid = uuid.NewV4() //保證上傳的每張圖片時唯一的
//產品ID--UUID-文件類型后綴
fileName := tools.UintToString(ProductId) + "--" + ImageUid.String() + extName
fmt.Println(fileName)
//fileName := extName
//fmt.Println(video.ID)
// 5、執行上傳
dst := path.Join(dir, fileName)
c.SaveUploadedFile(HeadImgfile, dst)
////生成HeadImgUrl請求地址,保存進入數據庫
var HeadImgUrl = url + fileName
fmt.Println(HeadImgUrl)
//video.HeadImgUrl=HeadImgUrl
//var ProductImg model.ProductImage{}
//common.DB.Model(&).Update("head_img_url", HeadImgUrl)
ProductImage.Url = HeadImgUrl
if err := common.DB.Create(&ProductImage).Error; err != nil {
c.JSON(200, gin.H{
"data": gin.H{
"err": err,
},
"meta": gin.H{
"msg": "數據寫入數據庫失敗",
"status": 400,
}})
return
}
// 成功
c.JSON(200, gin.H{
"data": gin.H{
"ProductImage": ProductImage,
},
"meta": gin.H{
"msg": "圖片上傳成功",
"status": 200,
},
})
}