在axios上传图像时发送多个参数

时间:2019-01-24 13:00:02

标签: symfony vuejs2 axios

我正在上传带有formdata和axios的图像。我在后端使用symfony,我需要访问我的图像文件和其他参数。这是我的axios代码。

axios.post(testUp, { data: formData, ad: 12 }, {
                    headers: {
                        'Content-Type': 'multipart/form-data'
                    }
                }).then(response => {

                });

这是我的symfony代码。

/**
 * @Route("/test_up", name="test_up", methods={"GET","POST"})
 */
public function testUp(Request $request, CarRepository $carRepository) {
    dd($request->files->all());
}

不幸的是,我的输出为null。我从上传的图像中获取formdata,它是一个formdata对象。如果我这样做但需要两个参数都可以。

axios.post(testUp, formData, {
                 headers: {
                     'Content-Type': 'multipart/form-data'
                 }
             }).then(response => {
                 alert('*');
                 console.log(response);
             });

但是我也需要发送其他参数。

2 个答案:

答案 0 :(得分:1)

您不能将FormData与JSON混合。是有关的问题

  

Send FormData object AND an additional parameter via ajax

如果只有一个参数-ad = 12,我建议使用代码:

axios.post(testUp + "?" + (new URLSearchParams({ad: 12})).toString()
, formData, {
                 headers: {
                     'Content-Type': 'multipart/form-data'
                 }
             }).then(response => {
                 alert('*');
                 console.log(response);
             });

答案 1 :(得分:1)

在Symfony方面,您应该使用表格,以便您可以接收多种类型的数据。在此处查看文档:{​​{3}}

在vuejs / axios方面,您无法同时发送json内容和表单数据内容(因为它是2种不同类型的数据)。但是您可以在表单数据中添加一些内容(就像在Symfony表单中可以包含其他字段的文件一样。)