当前位置: 首页 > 知识库问答 >
问题:

手动上传多个文件到Symfony后端(没有表格)

万高洁
2023-03-14

我遇到了一个问题,试图将多个文件从ReactJS应用程序发送到Symfony后端。

我上传了两个文件,但只有一个在我的Symfony后端可见。

数据是从ReactJS dropzone发送的,我很好地检查了这两个文件是通过formData发送的,我很好地使用了“content-type”:'multipart/form-data'来发布数据。

在ChromeNewtwork选项卡中,表单数据详细信息显示两个文件很好地附加到请求:

-webkitformboundarytif 9 SiH CTI 30 uxs Content-Disposition:form-data;name = " filefilename = " glacier-583419 _ 960 _ 720 . jpg "内容类型:image/jpeg

------WebKitFormBoundaryTif9sihCtI30UXXS内容配置:表单数据;name=“文件”;filename=“image ile.jpg”内容类型:image/jpeg

然而,在我的Symfony后端,文件参数包只显示一个文件:

return $request->files;

序列化响应:

{
    "parameters": {
        "file": {
            "test": false,
            "original_name": "glacier-583419_960_720.jpg",
            "mime_type": "image/jpeg",
            "error": 0
        }
    },
    "file_keys": [
        "error",
        "name",
        "size",
        "tmp_name",
        "type"
    ]
}

如您所见,在“参数”中,只存在一个文件,而不是两个。

有人遇到过这个问题吗?我不知道可能是什么问题?

共有1个答案

齐英韶
2023-03-14

我解决了我的问题,这是微不足道的,但它可以帮助其他人将来阅读。

按照发送的表格数据所示:

-webkitformboundarytif 9 SiH CTI 30 uxs Content-Disposition:form-data;name = " filefilename = " glacier-583419 _ 960 _ 720 . jpg "内容类型:image/jpeg

------WebKitFormBoundaryTif9sihCtI30UXXS内容配置:表单数据;name=“文件”;filename=“image ile.jpg”内容类型:image/jpeg

表单数据中添加的每个元素都具有相同的名称值。这是问题所在:

var tempFormData = new FormData();
setFormData(acceptedFiles.map((file)=>{
   tempFormData.append('file', file);
}));

更正代码 :

var tempFormData = new FormData();
setFormData(acceptedFiles.map((file)=>{
   tempFormData.append(file.name, file);
}));

因此,错误不是来自Symfony,而是来自前端应用程序没有很好地格式化发送的数据。

 类似资料:
  • 页面两个el-upload,一个选择appkey文件,一个选择appsecret文件,再点击上传按钮上传,请问怎么处理

  • 问题内容: 我试图在不实际使用用户输入文件的情况下伪造文件上传。文件的内容将从字符串动态生成。 这可能吗?有人做过吗?有例子/理论可用吗? 澄清一下,我知道如何使用隐藏的iframe和朋友使用AJAX技术上传文件-问题是上传的文件格式不正确。 我正在使用ExtJS,但是jQuery也是可行的,因为ExtJS可以插入其中(ext-jquery-base)。 问题答案: 为什么不只与POST一起使用?

  • springboot接收前端上传到后端的文件时,在controller层内大多数使用的是MultipartFile进行接收的,当使用file进行接收时会报错 有大佬知道为啥不能用file接收文件吗?

  • 问题内容: 我遇到了这个简单的js ajax上传代码(由于某种原因,jquery 似乎不适用于HTML5), 但是我这里有两个问题, 这条线在物体之后是什么意思? 为什么在那里需要ID?我能做些什么使用jQuery 用? 此ajax仅用于单个文件上传,如何更改多个文件上传? 问题答案: 这行在对象FormData之后是什么意思? 在得到由它的ID元件。该抓住从元件中的第一选择的文件。将其追加到与字

  • 问题内容: 我的测试需要在不同的浏览器中上传测试文件(我使用+ )。对于单个文件上传,一切正常。我只是发送路径 Firefox:我找不到正确的语法。 任何想法? 所有浏览器都有通用的语法吗? 问题答案: 据我所知,硒 仍然 不支持多个文件上传(请参阅google code上的问题 )。 至少有一种解决方法:显然创建一个包含所需输入字段的表单。这不是最佳的解决方案,因为它(可能)需要更改您的代码才能

  • 问题内容: 我遇到的情况是,我有一个表格,其中有一行,其中有两个文本字段条目,我必须上载该行的文件,并且这种行可以是“ N”,然后是可以在整个表单中输入的主文件,而这些文件是表单的一部分,我必须在单击保存按钮后立即提交所有这些文件。 我有点被ng-upload困扰,它需要一个api调用,而对于这种形式,我真的不能超过一个api调用。示例html代码如下: 问题答案: 这是文件值绑定指令示例.. h