vue怎么把对象数组传输到后端并接收(formDate格式multipart/form-data)

 有时我们需要用content-type=multipart/form-data的格式传输数据,下面演示下前端上传与后端接收过程:

 第一步:前端上传 

new Vue({
    data:{
        addGoodsForm:{
            //规格数据
            goodsSpecsList: [{
                spec: '',          //规格
                price: '',         //价格
                stock: '',         //库存
            }]
           
        }

    },
    methods:{

        upload(){   
            //上传类型
            let config = {
                headers: {
                    'Content-Type': 'multipart/form-data'
                }
            };

            // 创建新的数据对象   多文件上传
            let formData = new FormData();  
                   
            //把数组对象存到formData中
            this.addGoodsForm.goodsSpecsList.forEach((item, i)=> {
                formData.append(`goodsSpecsList[${i}].spec`, item.spec)
                formData.append(`goodsSpecsList[${i}].price`, item.price)
                formData.append(`goodsSpecsList[${i}].stock`, item.stock)
            })
            // 自定义上传
            axios
                .post('输入你要上传的地址...', formData,config)
                .then((res) => {
                    //上传成功回调函数
                })
                .catch((err) => {
                   //上传失败回调函数
                })

        },
    }

})

第二步:后端接收(用的springMVC框架)

1.controller层

@RequestMapping("/upload")
@ResponseBody
public ResultInfo upload( GoodsSpecsVo goodsSpecsVo ) {

    System.out.println(goodsSpecsVo);
    ........

}

2.Vo接收模板类

public class GoodsSpecsVo {
    private List<GoodsSpecs> goodsSpecsList;

    @Override
    public String toString() {
        return "GoodsSpecsVo{" +
                "goodsSpecsList=" + goodsSpecsList +
                '}';
    }

    public List<GoodsSpecs> getGoodsSpecsList() {
        return goodsSpecsList;
    }

    public void setGoodsSpecsList(List<GoodsSpecs> goodsSpecsList) {
        this.goodsSpecsList = goodsSpecsList;
    }
}

 3.domain层

public class GoodsSpecs {
    private Integer id;
    private Integer goods_id;
    private Integer price;
    private String spec;
    private Integer stock;
    public GoodsSpecs(){}
    public GoodsSpecs(Integer id, Integer goods_id, Integer price, String spec, Integer stock) {
        this.id = id;
        this.goods_id = goods_id;
        this.price = price;
        this.spec = spec;
        this.stock = stock;
    }

    @Override
    public String toString() {
        return "GoodsSpecs{" +
                "id=" + id +
                ", goods_id=" + goods_id +
                ", price=" + price +
                ", spec='" + spec + '\'' +
                ", stock=" + stock +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getGoods_id() {
        return goods_id;
    }

    public void setGoods_id(Integer goods_id) {
        this.goods_id = goods_id;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public String getSpec() {
        return spec;
    }

    public void setSpec(String spec) {
        this.spec = spec;
    }

    public Integer getStock() {
        return stock;
    }

    public void setStock(Integer stock) {
        this.stock = stock;
    }
}
end~~以上代码希望对您有所帮助~记得点赞支持哟~
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用Vuemultipart/form-data参数时,可能会遇到无法递的问题。其中一个可能的原因是未正确设置表单的enctype属性。即便是使用Vue,也需要确保表单是正确设置的。 enctype属性告诉浏览器表单数据应该如何编码。当表单包括二进制数据(如图片或文件)时,必须设置为multipart/form-data。但是,Vue默认情况下不会自动将enctype设置为multipart/form-data。因此,需要手动设置表单的enctype属性为multipart/form-data。 设置表单的enctype属性有两种方法。第一种方法是在HTML代码中手动设置表单的enctype属性。例如: <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form> 第二种方法是在Vue组件中使用v-bind指令设置表单的enctype属性。例如: <template> <form action="/upload" method="post" :enctype="'multipart/form-data'"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form> </template> 在第二种方法中,v-bind指令允许您绑定一个表达式到Vue组件中的HTML属性。在这种情况下,使用v-bind指令将enctype属性设置为multipart/form-data。这将确保浏览器正确地处理表单数据,并将二进制数据正常提交到服务器。 总之,要在Vue中成功multipart/form-data参数,您需要确保正确设置表单的enctype属性。此外,记得确保你的服务器端对multipart/form-data请求有正确的处理方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值