import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
public class FileUtils {
/**
* url转File
*
* @url:图片URL
* @fileName:文件名
* @return:返回的文件
*/
public static File urlToFile(String fileName, String url) {
File file = null;
try {
HttpURLConnection httpUrl = (HttpURLConnection) new URL(url).openConnection();
httpUrl.connect();
file = inputStreamToFile(httpUrl.getInputStream(), fileName);
httpUrl.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return file;
}
/**
* MultipartFile转File
*
* @param multipartFile
* @return
* @throws Exception
*/
public static File multipartFileToFile(MultipartFile multipartFile) throws Exception {
InputStream ins;
ins = multipartFile.getInputStream();
File file = new File(System.getProperty("java.io.tmpdir") + File.separator + multipartFile.getOriginalFilename());
inputStreamToFile(ins, file);
ins.close();
return file;
}
/**
* url转MultipartFile
*
* @param url
* @param fileName
* @return
*/
public static MultipartFile urlToMultipartFile(String url, String fileName) {
MultipartFile multipartFile = null;
try {
HttpURLConnection httpUrl = (HttpURLConnection) new URL(url).openConnection();
httpUrl.connect();
File file = inputStreamToFile(httpUrl.getInputStream(), fileName);
multipartFile = fileToMultipartFile(file);
httpUrl.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return multipartFile;
}
public static CommonsMultipartFile fileToMultipartFile(File file) {
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);
FileItem item = diskFileItemFactory.createItem(file.getName(), "text/plain", true, file.getName());
int bytesRead;
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 new CommonsMultipartFile(item);
}
public static File inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = Files.newOutputStream(file.toPath());
int bytesRead;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
return file;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static File inputStreamToFile(InputStream ins, String name) throws Exception {
File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
OutputStream os = Files.newOutputStream(file.toPath());
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;
}
/**
* 将image类型转为File类型
*
* @param url
* @return
*/
public static File downloadWxFile(String url) {
String reptype = "";
File file = null;
InputStream inputStream = null;
OutputStream outputStream = null;
try {
file = File.createTempFile("wx_image", reptype);
//下载
URL urlfile = new URL(url);
inputStream = urlfile.openStream();
outputStream = Files.newOutputStream(file.toPath());
int bytesRead;
byte[] buffer = new byte[8192];
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != outputStream) {
outputStream.close();
}
if (null != inputStream) {
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return file;
}
}
java url转file以及其他格式转换工具类
于 2023-02-23 17:42:10 首次发布