ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-20 13:34:00  阅读:137  来源: 互联网

标签:200 HeadImgUrl err element ProductImage gin 上传 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,
		},
	})
}

标签:200,HeadImgUrl,err,element,ProductImage,gin,上传,500
来源: https://www.cnblogs.com/chengqiang521/p/15710490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有