网上看了很多,但是不符合需求不说,还有很多都不能用。。。。自己就整理了下相关的代码,可能会有点乱,自己理解着看
根据url地址将文件转换成MultipartFile格式的文件
/**
* @description: 根据url地址读取文件并转为MultipartFile格式
* @param: url 文件地址
* @param: fileName 文件名
* @return: MultipartFile格式的文件
* @author 拥有盛世美颜的芳心纵火犯----ym
* @date: 2022/6/16 9:46
*/
public static MultipartFile urlToMultipartFile(String url,String fileName) throws Exception {
File file = null;
MultipartFile multipartFile = null;
try {
HttpURLConnection httpUrl = (HttpURLConnection) new URL(url).openConnection();
httpUrl.connect();
file = inputStreamToFile(httpUrl.getInputStream(),fileName);
multipartFile = fileToMultipartFile(file);
httpUrl.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return multipartFile;
}
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 len = 8192;
byte[] buffer = new byte[len];
int bytesRead;
while ((bytesRead = ins.read(buffer, 0, len)) != -1){
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
return file;
}
public static MultipartFile fileToMultipartFile(File file) {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
FileItem item = diskFileItemFactory.createItem(file.getName(), "multipart/form-data", true, file.getName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = item.getOutputStream();
int len = 8192;
while ((bytesRead = fis.read(buffer, 0, len)) != -1){
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return (MultipartFile)new CommonsMultipartFile(item);
}
同理利用file的io流读取文件(这里我的需求是将html页面转成的字符串,转成MultipartFile格式)也可以转MultipartFile格式的文件,然后结合上面的fileToMultipartFile方法转一下
public File stringToFile(String str,String name) throws Exception {
ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes());
File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
OutputStream os = new FileOutputStream(file);
int len = 8192;
byte[] buffer = new byte[len];
int bytesRead;
while ((bytesRead = stream.read(buffer, 0, len)) != -1){
os.write(buffer, 0, bytesRead);
}
os.close();
stream.close();
return file;
}
再一个就是根据url地址,将html文件转为字符串储存
/**
* @description: 先获取注册协议,然后通过url读取html转为字符串
* @author 拥有盛世美颜的芳心纵火犯----ym
* @date 2022/6/16 9:35
* @version 1.0
*/
public String getRegisterAgreement(String htmlUrl) {
String Str = "";
try {
URL url = new URL(htmlUrl);
URLConnection conn = url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine ;
while ((inputLine = br.readLine()) != null) {
//将读取到的字符拼接
Str += inputLine;
}
br.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return Str ;
}
大致就是这样,加油!