element文件上傳,狀態碼500,排除思路


服務器返回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,
		},
	})
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM