Gorm 创建表单数据文件上传错误
短信预约 -IT技能 免费直播动态提醒
php小编柚子今天为大家介绍的是关于Gorm创建表单数据文件上传错误的问题。在开发过程中,我们经常会遇到文件上传的需求,而Gorm是一个强大的ORM库,它提供了便捷的数据库操作方法。然而,在使用Gorm进行表单数据文件上传时,有时会出现一些错误。本文将为大家解析这些错误,并提供相应的解决方案,帮助大家更好地应对这一问题。
问题内容
我正在尝试在 postgresql 服务器中创建记录。该请求以多部分格式的文件数据形式发送给我。将文件上传到我这边后,我调用 gorm.create,但它抛出一个错误。
当我注释掉文件上传部分时,错误消失,但我需要上传文件。
这是我的控制器部分:
func (pc productcontroller) create(c *gin.context) {
var product migrations.product
if err := c.bind(&product); err != nil {
c.json(400, gin.h{"error": err.error(), "message": "İşlem başarısız. lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. hata kodu: pd-crt-01"})
return
}
if product.name == "" {
c.json(400, gin.h{"error": "name is required", "message": "İşlem başarısız. lütfen ad alanını boş bırakmayınız. hata kodu: pd-crt-02"})
return
}
if product.price == 0 {
c.json(400, gin.h{"error": "price is required", "message": "İşlem başarısız. lütfen fiş değeri alanını boş bırakmayınız. hata kodu: pd-crt-03"})
return
}
if product.id != 0 {
c.json(400, gin.h{"error": "remove id field", "message": "lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. hata kodu: pd-crt-id-01"})
return
}
file, err := c.formfile("image")
if err != nil {
c.json(400, gin.h{"error": err.error(), "message": "lütfen resim ekleyiniz. hata kodu: pd-crt-img-01"})
}
filename := time.now().format("20060102150405") + "-" + strings.split(file.filename, ".")[0] + "." + strings.split(file.filename, ".")[1]
dst := fmt.sprintf("./public/images/%s", filename)
err = c.saveuploadedfile(file, dst)
if err != nil {
c.json(400, gin.h{"error": err.error(), "message": "lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. hata kodu: pd-crt-img-02"})
return
}
product.image = &migrations.file{
path: filename,
extension: strings.split(file.filename, ".")[1],
}
log.println(product)
err = db.conn.create(&product).error
if err != nil {
c.json(400, gin.h{"error": err.error(), "message": "İşlem başarısız. lütfen tekrar deneyiniz veya sistem yöneticinize başvurun. hata kodu: pd-crt-04"})
return
}
c.json(http.statuscreated, gin.h{"message": "Ürün başarıyla eklendi.", "data": product})
return
}
我的要求:
错误:
{
"error": "strconv.parseint: parsing \"products\": invalid syntax; strconv.parseint: parsing \"products\": invalid syntax",
}
这是我的结构:
type Order struct {
ID uint `gorm:"primarykey" json:"id"`
UserID int `gorm:"index" json:"user_id"`
RoomNo int `gorm:"comment:oda_no" json:"room_no"`
IsDone bool `gorm:"default:false" json:"is_done"`
StatusCode int `gorm:"default:0" json:"status_code"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt time.Time `gorm:"index" json:"deleted_at"`
Products []*Product `gorm:"many2many:orders_products" json:"products,omitempty"`
}
type Product struct {
ID uint `gorm:"primarykey" json:"id" form:"id"`
Name string `gorm:"type:varchar(255)" json:"name" form:"name"`
Price float64 `gorm:"type:decimal(10,2)" json:"price" form:"price"`
IsActive bool `gorm:"default:true" json:"is_active" form:"isActive"`
Image File `gorm:"polymorphic:Module" json:"image,omitempty"`
CreatedAt time.Time `json:"created_at" form:"createdAt"`
UpdatedAt time.Time `json:"updated_at" form:"updatedAt"`
DeletedAt time.Time `gorm:"index" json:"deleted_at"`
}
type OrdersProduct struct {
OrderID int `gorm:"index" json:"order_id"`
ProductID int `gorm:"index" json:"product_id"`
Count int `gorm:"default:0" json:"count"`
}
type File struct {
ID uint `gorm:"primarykey" json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt time.Time `gorm:"index" json:"deleted_at"`
Path string `gorm:"type:varchar(255)" json:"path"`
Extension string `gorm:"type:varchar(255)" json:"extension"`
ModuleID int `gorm:"type:integer" json:"module_id"`
ModuleType int `gorm:"type:integer" json:"module_type"`
}
解决方法
检查文件结构的单元类型。 strconv.ParseInt() 将字符串转换为值。我认为 ModuleID、ModuleType 或两者都必须是字符串。
以上就是Gorm 创建表单数据文件上传错误的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341