程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了分段文件上传Spring Boot大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决分段文件上传Spring Boot?

开发过程中遇到分段文件上传Spring Boot的问题如何解决?下面主要结合日常开发的经验,给出你关于分段文件上传Spring Boot的解决方法建议,希望对你解决分段文件上传Spring Boot有所启发或帮助;
@requestbody multipartfile[] submissions

应该

@requestParam("file") multipartfile[] submissions

这些文件不是请求主体,它们是请求主体的一部分,并且没有内置httpmessageConverter函数可以将请求转换为的数组@H_364_3@multipartfile。

你也可以替换httpServletrequest使用@H_364_3@multiparthttpServletrequest,这使你可以访问各个部分的标题。

你可以简单地使用如下控制器方法:

@requestMapPing(value = "/uploadfile", method = requestMethod.POST)
@ResponseBody
public ResponseEntity<?> uploadfile(
    @requestParam("file") multipartfile filE) {

  try {
    // Handle the received file here
    // ...
  }
  catch (Exception E) {
    return new ResponseEntity<>(httpStatus.bAD_requEST);
  }

  return new ResponseEntity<>(httpStatus.OK);
} // method uploadfile

没有针对Spring Boot的任何其他配置。

使用以下HTML表单客户端:

<HTML>
<body>
  <form action="/uploadfile" method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload"> 
  </form>
</body>
</HTML>

如果要设置文件大小的限制,可以在中进行操作application.propertIEs:

# file size limit
multipart.maxfileSize = 3Mb

# @R_448_10586@l request size for a multipart/form-data
multipart.maxrequestSize = 20Mb

解决方法

我正在使用Spring Boot,并且想要使用COntroller来接收分段文件上传。发送文件时,我不断收到错误415不支持的内容类型响应,并且永不到达控制器

There was an unexpected error (type=Unsupported Media Type,status=415).
Content type 'multipart/form-data;boundary=----WebKitFormBoundary1KvzQ1rt2V1bbbb8' not supported

香港专业教育学院试图在HTML / jsp页面以及使用RestTemplate的独立客户端应用程序中使用form:action发送。所有尝试都给出相同的结果

@H_364_3@multipart/form-data;boundary=XXXXX not supported.

从分段文档看来,必须将边界参数添加到分段上传中,但这似乎与控制器接收到的不匹配 "multipart/form-data"

我的控制器方法设置如下

@requestMapping(value = "/things",method = requestMethod.POST,consumes = "multipart/form-data",produces = { "application/json","application/xml" })
     public ResponseEntity<ThingRepresentation> submitThing(httpServletrequest request,@PathVariable("domain") String domainParam,@requestParam(value = "type") String thingTypeParam,@requestBody MultipartFile[] submissions) throws Exception

使用Bean设置

 @Bean
 public MultipartConfigElement multipartConfigElement() {
     return new MultipartConfigElement("");
 }

 @Bean
 public MultipartResolver multipartResolver() {
     org.springframework.web.multipart.commons.CommonsMultipartResolver multipartResolver = new org.springframework.web.multipart.commons.CommonsMultipartResolver();
     multipartResolver.setMaxUploadSize(1000000);
     return multipartResolver;
 }

如你所见,我已经将消耗类型设置为“ multipart / form-data”,但是当发送multipart时,它必须具有边界参数并放置一个随机边界字符串。

谁能告诉我如何在控制器中设置内容类型以匹配或更改请求以匹配控制器设置?

我尝试发送&Hellip;尝试1 &Hellip;

<html lang="en">
<body>

    <br>
    <h2>Upload New File to this Bucket</h2>
    <form action="http://localhost:8280/appname/domains/abc/things?type=abcdef00-1111-4b38-8026-315b13dc8706" method="post" enctype="multipart/form-data">
        <table width="60%" border="1" cellspacing="0">
            <tr>
                <td width="35%"><strong>File to upload</strong></td>
                <td width="65%"><input type="file" name="file" /></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><input type="submit" name="submit" value="Add" /></td>
            </tr>
        </table>
    </form>
</body>
</html>

尝试2 ....

RestTemplate template = new RestTemplate();
MultiValueMap<String,Object> parts = new LinkedMultiValueMap<String,Object>();
parts.add("file",new FileSystemresource(pathToFilE));

try{

    URI response = template.postForLOCATIOn(url,parts);
}catch(httpClientErrorException E){
    System.out.println(e.getResponseBodyAsString());
}

尝试3 &Hellip;

FormhttpmessageConverter formhttpmessageConverter = new FormhttpmessageConverter();
        formhttpmessageConverter.setCharset(Charset.forName("UTF8"));


        RestTemplate restTemplate = new RestTemplate();

        restTemplate.getmessageConverters().add( formhttpmessageConverter );
        restTemplate.getmessageConverters().add(new MappingJackson2httpmessageConverter());
        restTemplate.setrequestFactory(new httpComponentsClienthttprequestFactory());

        MultiValueMap<String,Object> map = new LinkedMultiValueMap<String,Object>();
        map.add("file",new FileSystemresource(path));

        httpHeaders imageHeaders = new httpHeaders();
        imageHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);

        httpEntity<MultiValueMap<String,Object>> imageEntity = new httpEntity<MultiValueMap<String,Object>>(map,imageHeaders);
        ResponseEntity e=  restTemplate.exchange(uri,httpR_117_11845@ethod.POST,imageEntity,Boolean.class);
        System.out.println(e.toString());

大佬总结

以上是大佬教程为你收集整理的分段文件上传Spring Boot全部内容,希望文章能够帮你解决分段文件上传Spring Boot所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。