Spring RestTemplate使用ByteArrayResource上传方式代码实现
1. 有哪些应用场景?在程序没有实际文件,只有字节数据可以使用此方法进行上传数据.如android 中的拍照后返回的字节数据等.
2. 代码实现
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
// parts.add("uploadfile", new FileSystemResource(uploadfile));//传统方式
ByteArrayOutputStream bos = new ByteArrayOutputStream();
InputStream is = new FileInputStream(uploadfile);
byte[] buffer = new byte[1024];
while (is.read(buffer) > 0) {
bos.write(buffer);
}
is.close();
bos.close();
ByteArrayResource arrayResource = new ByteArrayResource(bos.toByteArray()){
@Override
public String getFilename() throws IllegalStateException {
return "c://test.jpg";
}
};
parts.add("uploadfile", arrayResource);
3. 代码解析
3.1 ByteArrayResource类需要实现getFileName()方法返回一个文件名称
3.2.其中的bos.toByteArray() 可以为任意字节数据