我正在努力使用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=="; //@todo
File 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构建其余的请求
万千封印
侃侃无极
随时随地看视频慕课网APP
相关分类