File类和FileOutputStream类来创建临时文件,并将InputStream中的数据写入该文件中。然后,使用FileInputStream类来读取该临时文件的数据
/**
* <b>Function: </b> todo
*
* @program: 转换FileOutputStream
* @Package: com.kingbal.king.dmp
* @author: dingcho
* @date: 2024/08/31
* @version: 1.0
* @Copyright: 2024 www.kingbal.com Inc. All rights reserved.
*/
public class util {
public static FileInputStream convertToFileInputStream(InputStream inputStream) throws IOException {
// 是这个是访问本地数据/会创建
File tempFile = File.createTempFile("temp", ".tmp");
tempFile.deleteOnExit();
// 获取线上文件
// File tempFile = getDownloadImageFile;
try (FileOutputStream outputStream = new FileOutputStream(tempFile)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
return new FileInputStream(tempFile);
}
public static File getDownloadImageFile(String url ) throws IOException {
URL url = new URL(url);
try (InputStream in = url.openStream();
ByteArrayOutputStream buffer = new ByteArrayOutputStream()) {
int bytesRead;
byte[] data = new byte[1024];
while ((bytesRead = in.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, bytesRead);
}
File file = new File("");
OutputStream os = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write(bytes);
return file;
}
}
}
基本都是将文件上传到 OSS服务器上,远程读取,不过很大部分OSS对接接口能返回Byte[],就不用自己去转换了,需要认真看下对应API