package com.ruoyi.admin.utils;
|
|
import org.apache.http.entity.ContentType;
|
import org.springframework.mock.web.MockMultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.*;
|
import java.net.URL;
|
|
public class UrlToMultipartFileUtil {
|
|
// url: 链接,可访问的图片,视频,或其他文件
|
public static MultipartFile urlTransferMultipartFile(String url){
|
//对本地文件命名,可以从链接截取,可以自己手写,看需求 https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/98c0800f-3178-4db5-bf21-d53de2ed7849.jpg
|
// 截取出文件名,不包含尾缀
|
String fileName = url.substring(url.lastIndexOf("-") + 1);
|
File file = null;
|
URL urlfile;
|
InputStream inStream = null;
|
OutputStream os = null;
|
MultipartFile multipartFile = null;
|
try {
|
file = File.createTempFile("avatar", fileName);
|
//下载
|
urlfile = new URL(url);
|
inStream = urlfile.openStream();
|
os = new FileOutputStream(file);
|
|
int bytesRead = 0;
|
byte[] buffer = new byte[8192];
|
while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {
|
os.write(buffer, 0, bytesRead);
|
}
|
// file转multipartFile,如果只需要转File就不用加下面这两行代码,直接返回File即可
|
FileInputStream inputStream = new FileInputStream(file);
|
multipartFile = new MockMultipartFile(file.getName(), file.getName(),
|
ContentType.APPLICATION_OCTET_STREAM.toString(), inputStream);
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
try {
|
if (null != os) {
|
os.close();
|
}
|
if (null != inStream) {
|
inStream.close();
|
}
|
// 用完删除
|
if (null != file){
|
file.delete();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
// 按需返回file还是multipartFile
|
return multipartFile;
|
}
|
|
}
|