java 通过 HttpURLConnection 读取 服务器上面的文件信息
String apiUrl = http://ip+端口/api/read/file
URL url = new URL(apiUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream body = urlConnection.getInputStream();
FileItem fileItem = createFileItem(body, fileName);
MultipartFile multipartFile = new CommonsMultipartFile(fileItem );
log.info("multipartFile大小为" + multipartFile.getSize());
代码中调用 createFileItem 方法使InputStreama输入流转为 FileItem 字节流
/**
* @Description: 输入流转为文件字节流.
* @Param: [inputStream, fileName]
* @return: org.apache.commons.fileupload.FileItem
* @Author: david
* @Date: 2023/3/22
*/
public static FileItem createFileItem(InputStream inputStream, String fileName) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "file";
FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
int bytesRead = 0;
//适量开启这个buffer的大小
byte[] buffer = new byte[10 * 1024 * 1024];
OutputStream os = null;
try {
os = item.getOutputStream();
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
inputStream.close();
} catch (IOException e) {
throw new IllegalArgumentException("文件上传失败");
} finally {
if (os != null) {
try {
//关流
os.close();
} catch (IOException e1) {
}
}
if (inputStream != null) {
try {
//关流
inputStream.close();
} catch (IOException e2) {
}
}
}
return item;
}