Rumah > Artikel > pembangunan bahagian belakang > Gorm mencipta ralat muat naik fail data borang
Editor PHP Yuzi hari ini memperkenalkan kepada anda masalah ralat muat naik dalam fail data borang penciptaan Gorm. Semasa proses pembangunan, kami sering menghadapi keperluan untuk memuat naik fail, dan Gorm ialah perpustakaan ORM yang berkuasa yang menyediakan kaedah operasi pangkalan data yang mudah. Walau bagaimanapun, apabila menggunakan Gorm untuk muat naik fail data borang, beberapa ralat kadangkala berlaku. Artikel ini akan menganalisis ralat ini untuk anda dan menyediakan penyelesaian yang sepadan untuk membantu anda menangani masalah ini dengan lebih baik.
Saya cuba mencipta rekod dalam pelayan postgresql. Permintaan dihantar kepada saya sebagai data fail dalam format berbilang bahagian. Selepas memuat naik fail ke sebelah saya, saya memanggil gorm.create tetapi ia menimbulkan ralat.
Apabila saya mengulas bahagian muat naik fail, ralat hilang, tetapi saya perlu memuat naik fail.
Ini bahagian pengawal saya:
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 }
Permintaan saya:
Ralat:
{ "error": "strconv.parseint: parsing \"products\": invalid syntax; strconv.parseint: parsing \"products\": invalid syntax", }
Ini adalah struktur saya:
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"` }
Semak jenis unit struktur fail. strconv.ParseInt() Menukar rentetan kepada nilai. Saya rasa ModuleID, ModuleType atau kedua-duanya mestilah rentetan.
Atas ialah kandungan terperinci Gorm mencipta ralat muat naik fail data borang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!