我正在努力使用java spring创建对某些内部服务的有效请求。问题在于适当的有效载荷可用于多部分/表单数据边界。环境:java服务器->(其余)http multipart / form-data->一些服务(中间没有浏览器)有效负载应如下所示:------ WebKitFormBoundaryp8mrQWOb5GiyC90y内容处置:表单数据;name =“文件”; filename =“ 0000.png”内容类型:image / png[二进制数据]------ WebKitFormBoundaryp8mrQWOb5GiyC90y--不幸的是,我无法更改此“标题”,并且得到了如下所示的信息: --fkGT7CJaQB9-2aa8G1ePv17iHKnWSsd内容处置:表单数据;name =“文件”内容长度:170096[二进制数据]--fkGT7CJaQB9-2aa8G1ePv17iHKnWSsd--我搜索了许多stackoverlow问题,但似乎没有任何效果。这是我到目前为止所做的(在有效负载之上生成):HashMap<String, List<String>> additionalHeaders = new HashMap<>();String fileMd5 = "tgrlfG0pjblWZB6g1f7j5w=="; //@todoFile file = new File(systemFile.getAbsoluteFileLocation());Path filePath = Paths.get(systemFile.getAbsoluteFileLocation());try{ DiskFileItem fileItem = new DiskFileItem("file", "image/png", false, file.getName(), (int) file.length() , file.getParentFile()); InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream(); int ret = input.read(); while ( ret != -1 ) { os.write(ret); ret = input.read(); } os.flush(); MultipartFile multipartFile = new CommonsMultipartFile(fileItem); MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>(); ByteArrayResource resource = new ByteArrayResource(multipartFile.getBytes()); parts.add("files", resource); additionalHeaders.put("Content-MD5", Collections.singletonList(fileMd5)); additionalHeaders.put("Content-Disposition", Collections.singletonList("attachment; filename=\""+systemFile.getFilenameWithExtension()+"\"")); ResponseEntity<FrpFileServer> responseEntity = formDataRestClient.post(this, parts, FrpFileServer.class, isServerSide, frpToken.getTokenId(), additionalHeaders, MediaType.MULTIPART_FORM_DATA); return responseEntity.getBody();} catch (IOException e) { return null;}formDataRestClient通过RestTemplate构建其余的请求
2 回答

侃侃无极
TA贡献2051条经验 获得超10个赞
好的,我已经解决了用以下替换资源创建的问题:
ByteArrayResource resource = new ByteArrayResource(multipartFile.getBytes()){
@Override
public String getFilename() {
return systemFile.getFilenameWithExtension();
}
};
由于这一点,restTemplate以正确的方式处理了它的魔力:)
添加回答
举报
0/150
提交
取消