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 创建表单数据文件上传错误的详细内容。更多信息请关注PHP中文网其他相关文章!