java中如何通过URL转MultipartFile呢?
/**
* URL -> MultipartFile
*
* @param fileUrl
* @param fileName
* @return
*/
public static MultipartFile urlToMultipartFile(String fileUrl, String fileName) {
File file = null;
MultipartFile multipartFile = null;
try {
HttpURLConnection httpUrl = (HttpURLConnection) new URL(fileUrl).openConnection();
httpUrl.connect();
file = inputStreamToFile(httpUrl.getInputStream(), fileName);
System.out.println(String.format("URL -> file", file));
multipartFile = fileToMultipartFile(file);
System.out.println(String.format("file -> MultipartFile", multipartFile));
httpUrl.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return multipartFile;
}
/**
* InputStream -> File
*
* @param ins
* @param name
* @return
* @throws Exception
*/
public static File inputStreamToFile(InputStream ins, String name) throws Exception {
File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
OutputStream os = new FileOutputStream(file);
int bytesRead;
int len = 8192;
byte[] buffer = new byte[len];
while ((bytesRead = ins.read(buffer, 0, len)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
return file;
}
/**
* File -> MultipartFile
*
* @param file
* @return
*/
public static MultipartFile fileToMultipartFile(File file) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem item = factory.createItem(file.getName(), "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 new CommonsMultipartFile(item);
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


