首页 >后端开发 >Golang >Gorm 创建表单数据文件上传错误

Gorm 创建表单数据文件上传错误

PHPz
PHPz转载
2024-02-09 22:06:08938浏览

Gorm 创建表单数据文件上传错误

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中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除