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

SpringBoot简单的多部分文件上传与高级Rest客户端(Chrome)

戴浩初
2023-03-14

我想上传一个图像到文件系统。所以我用spring-boot上传多部分文件。我还使用Advance Rest Client(Chrome)工具来POSTMulti-part文件。但即使我没有指定任何内容类型org.apache.tomcat.util.http.fileupload,我也面临一个错误。FileUploadException:请求被拒绝,因为找不到多部分边界。

这是我的Rest控制器代码,

@RestController
public class StringController {
@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String singleSave(@RequestParam("file") MultipartFile file){

    String fileName = null;
    if (!file.isEmpty()) {
        try {
            fileName = file.getOriginalFilename();
            byte[] bytes = file.getBytes();
            BufferedOutputStream buffStream = 
                    new BufferedOutputStream(new FileOutputStream(new File("F:/" + fileName)));
            buffStream.write(bytes);
            buffStream.close();
            return "You have successfully uploaded " + fileName;
        } catch (Exception e) {
            return "You failed to upload " + fileName + ": " + e.getMessage();
        }
    } else {
        return "Unable to upload. File is empty.";
    }
  }
}

屏幕截图(高级Rest客户端工具)

错误

< code > { " timestamp ":1490678908517," status": 500," error ":"内部服务器错误"," exception ":" org . spring framework . web . multipart . multipart exception "," message ":"无法解析多部分servlet请求;嵌套异常为Java . io . io exception:org . Apache . Tomcat . util . http . file upload . file upload exception:请求被拒绝,因为未找到多部分边界"," path": "/upload" }

共有2个答案

祝灼光
2023-03-14

您丢失了客户端请求头的值边界。在PostMan标题“Content-Type”中构造如下:

Content-Type : multipart/form-data;boundary="12312313132132"
闾丘书
2023-03-14

问题出在您的Advanced rest客户端请求中。邮递员工作得很好。正在上载图像。找邮递员试试,你会收到的。

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

  • 使用Elasticsearch原生Java客户端API()的应用程序升级到使用Java高级REST客户端的路径是什么? 文件(初步?)似乎表明: Java高级REST客户端依赖于Elasticsearch核心项目。它接受与TransportClient相同的请求参数,并返回相同的响应对象。 (来源:https://www.elastic.co/guide/en/elasticsearch/clie

  • 如何使用 REST::客户端向 REST API 发送“多部分/表单数据”请求?有问题的API就在这里,这个特定的请求是有问题的。对于其他帖子请求,我可以简单地将数据作为JSON发送,使用 然而,因为这可能需要一个文件,所以我似乎必须使用“multipart/form-data”作为Content-Type。我已经尝试了很多方法,例如以JSON格式发送数据(它不会拾取api_key),使用REST

  • 我正在尝试从ElasticSearch 2过渡到5或6。我想我想直接跳到6.1.1并使用RestHighLevelClient,因为它比低级rest客户端更接近我正在使用的现有传输客户端。 但是,我遇到了一个问题作为集成测试的一部分,我正在创建索引并插入特定数据,因此我知道我的查询是正确的。我似乎无法在High Level客户端中做到这一点。特别是,我希望能够调用: 但是,client.indic

  • 我在spring boot中编写了一个restful web服务来接收文件。 如何将文件从客户端java代码上传到web服务。而不是AJAX调用或HTML页面表单多部分请求? 下面的代码使用JSON对象调用web服务。像这样,我想在上面写的web服务中接收文件。

  • 我正在使用Perl的REST::Client发出多部分POST请求: REST API 如下所示: 当我运行脚本时,出现以下错误: 解析多部分servlet请求失败;嵌套异常java.io.IOException:org.apache.tomcat.util.http.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界] 我是perl新手,语法或其他方