1.網絡資源轉File
需要引入依賴commons-io
/**
* 讀取網絡中的圖片
* @param url https://www.kziyue.com/wp-content/uploads/2019/06/5bca-hxyuaph9825616.jpg
* @return
*/
public File URLToFile(String url){
File file1 = new File("test.png");
try {
URL url1 = new URL(url);
FileUtils.copyURLToFile(url1,file1);
} catch (IOException e) {
e.printStackTrace();
}
File absoluteFile = file1.getAbsoluteFile();
return file1;
}
2.網絡資源轉MultipartFile
需要引入依賴spring-web
/**
* 文件上傳
* @param urlStr url地址
* @return multipartFile
*/
public MultipartFile fileUpload(String urlStr) throws Exception {
try {
//把地址轉換成URL對象
URL url = new URL(urlStr);
//創建http鏈接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//設置超時間為3秒
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403錯誤
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/61.0.3163.100 Safari/537.36)");
//得到輸入流
InputStream inputStream = conn.getInputStream();
//截取鏈接中的文件名
String fileName= urlStr.substring(urlStr.lastIndexOf("/")+1);
MultipartFile multipartFile = new MockMultipartFile(fileName,fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
return multipartFile;
} catch (Exception e) {
e.printStackTrace();
}
throw new Exception();
}
3.File轉MultipartFile
需要引用的依賴spring-text,httpcore
/**
* 文件類型轉換
*
* @param filePath 文件file
* @return MultipartFile
*/
public static MultipartFile caseFileToMultipartFile(File filePath) {
MultipartFile multipartFile = null;
try {
log.info("開始進行文件轉換");
FileInputStream fileInputStream = new FileInputStream(filePath);
multipartFile = new MockMultipartFile(filePath.getName(), filePath.getName(),
ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return multipartFile;
}
4.File轉字節數組
/**
* 將文件轉為字節數組
* @param file
* @param size 1024
* @return
*/
public static byte[] BufferStreamForByte(File file, int size) {
byte[] content = null;
try {
BufferedInputStream bis = null;
ByteArrayOutputStream out = null;
try {
FileInputStream input = new FileInputStream(file);
bis = new BufferedInputStream(input, size);
byte[] bytes = new byte[1024];
int len;
out = new ByteArrayOutputStream();
while ((len = bis.read(bytes)) > 0) {
out.write(bytes, 0, len);
}
bis.close();
content = out.toByteArray();
} finally {
if (bis != null) {
bis.close();
}
if (out != null) {
out.close();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return content;
}
5.Frame轉BufferedImage
需要引入依賴JAVAcv
public static BufferedImage FrameToBufferedImage(Frame frame) {
//創建BufferedImage對象
Java2DFrameConverter converter = new Java2DFrameConverter();
BufferedImage bufferedImage = converter.getBufferedImage(frame);
return bufferedImage;
}
6.BufferedImage轉MultipartFile
public static MultipartFile fileCase(BufferedImage image){
//得到BufferedImage對象
// BufferedImage bufferedImage = JoinTwoImage.testEncode(200, 200, url);
MultipartFile multipartFile= null;
try {
//創建一個ByteArrayOutputStream
ByteArrayOutputStream os = new ByteArrayOutputStream();
//把BufferedImage寫入ByteArrayOutputStream
ImageIO.write(image, "jpg", os);
//ByteArrayOutputStream轉成InputStream
InputStream input = new ByteArrayInputStream(os.toByteArray());
//InputStream轉成MultipartFile
multipartFile =new MockMultipartFile("file", "file.jpg", "text/plain", input);
} catch (IOException e) {
e.printStackTrace();
}
return multipartFile;
}