遇到需要调用别人接口上传MultiPartFile格式的文件,需要将file转化为MultiPartFile
在网上随便找了个方法:
public multipartFile uploadFile(File imgFile) throws ServiceException {
FileItem fileItem = this.createFileItem(imgFile);
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
}
public FileItem createFileItem(File file) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem item = factory.createItem("textField", "text/plain", true, file.getName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
但是通过feign去传文件的时候,总是报HTTP Status 400 – Bad Request,检查后将代码中的
FileItem item = factory.createItem("textField", "text/plain", true, file.getName());
修改为了
FileItem item = factory.createItem("file", "multipart/form-data", true, file.getName());
即可成功上传文件