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

JAVA:上传多部分文件

漆雕亮
2023-03-14

我正在Spring controller中努力实现多部分文件上传。我读过很多问题,谷歌,但似乎什么都不管用。

我明白了

error: "Bad Request"
exception: "org.springframework.web.multipart.support.MissingServletRequestPartException"
message: "Required request part 'file' is not present"

我的BE控制器:

@RequestMapping(value = "/zip", method = RequestMethod.POST)
public void readFile(@RequestParam("file") MultipartFile file) throws IOException { 
// code
}

FE,angularJS:

service.getZip = function getZip(file) {
    var formData = new FormData();
    formData.append('file', file);
    return $http({
        method: 'POST',
        url: CONSTANTS.readFile,
        data: formData,
        headers: {'Content-Type': undefined}
    }) .then(function (response) {
        var data = response.data;
        return data.id;
    });
}

HTML:

<input type="file" id="file" name="file" accept=".txt"/>

还有应用程序。属性包括:

spring.http.multipart.enabled=false

更新:

当我按照@Byeon0gam的建议从我的控制器中删除@RequestParam时,我不再会遇到这个错误,但是我的文件在控制器中是空的。虽然在FE服务中,如我所见,它不是空的:

共有1个答案

能钟展
2023-03-14

将FE中的内容类型更改为:

headers: {'Content-Type': 'x-www-form-urlencoded'}

希望它对你有用。

 类似资料:
  • 我试图创建一个页面,用户可以张贴图像及其细节。现在,当我测试来自postman的spring boot服务时,我能够成功地在服务中获取文件。当我试图从angular5中做同样的事情时,多部分文件在服务中没有被识别,并且总是得到空数组。 我的角服务代码如下 } 我已经尝试添加标头,如multipart/form-data,并将其设置为un定义。无论哪种方式,我都收到了错误。在发布到这里之前,我已经广

  • 我正在使用这个音频记录和视频文件,它是工作的,但我想用OKHTTP取代它。我没弄明白。有人能帮我一下吗?

  • 我试图用python写的lambda (aws)完成多部分上传。下面是我正在使用的代码。大约有120个部件,总大小为30GB。下面的操作似乎没有在5分钟内完成,因此lambda关闭,上传似乎没有完成。S3提供异步多部分上传功能吗?我相信这将确保文件得到合并,不管lambda关闭。

  • 我正在使用Spring Boot 1.2。我想上传一个原始二进制文件到控制器。文件大小可能很大,因此我不想将整个请求保存在内存中,而是流式传输文件,事实上,文件是在传输开始时生成的,因此客户端甚至不知道文件的大小。我在这里看到了一个如何使用多部分编码的文件上传进行类似操作的示例。然而,我不想要一个多部分编码的上传,只是一个原始的字节流。我似乎找不到在Spring处理这个用例的方法。

  • 编写代理文件上载的应用程序。我正在使用CURL发布文件,但有一些问题。发布到脚本是正常的,它从脚本发布到下一个服务器就是问题所在。我一直从服务器收到此错误: “请求被拒绝,因为没有找到多部分边界” 这是我的代码: 我在网上读到的所有内容都表明,这应该可行,而且设置标题内容类型也是不必要的,但当我删除内容类型时,我会出现以下错误: 请求不包含多部分/表单数据或多部分/混合流,内容类型标头为null

  • 在Android中使用OKHTTP以多部分方式上传单个大文件(更具体地说,上传到s3)时,我有什么选择?