element文件上传,状态码500,排除思路

element文件上传,状态码500,排除思路

服务器返回500,服务器内部错误,经过断点测试,发现是接受前端图片时,产生的错误;

检查前端请求的表单数据,发现图片的是file,后端代码中使用了错误的字段来接收,修改后,测试通过

element文件上传,状态码500,排除思路

前端代码

          <!-- 产品图片上传 -->
          <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,
		},
	})
}
上一篇:Edge 浏览器奇葩 bug:“123456”打印成“114447”


下一篇:3模型绑定和模型验证