阿里云OSS文件下载功能简易实现
1.场景说明
将阿里云OSS文件下载至本地。
2.操作方法
提供2中文件下载方式:1、原生的输入输出流处理;2、commons-io-2.4-sources.jar包中的FileUtils.copyURLToFile现成方法处理。
2.1方式一
利用原生的输入输出流处理。
*步:获取OSS文件链接,读取输入流
// 截取片段代码
URL url = new URL(urllink);
//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
InputStream in = url.openStream();
String gaokuai_url = HttpUpload.uploadOSS(in, fileName);
// logger.info(“FeedbackServiceImpl.downloadFilesFromUrl gaokuai_url:” + gaokuai_url);
if(!gaokuai_url.equals(“”)){
if(sb.length() >0){
sb.append(tag + gaokuai_url);
}else{
sb.append(gaokuai_url);
}
}
第二步:文件下载
public static void download(InputStream inputStream){
try {
File file = new File(“/Users/loongshawn/Downloads/Penguins.jpg”);
OutputStream outputStream = new FileOutputStream(file);
int byteCount = 0;
//1M逐个读取
byte[] bytes = new byte[1024*1024];
while ((byteCount = inputStream.read(bytes)) != -1){
outputStream.write(bytes, 0, byteCount);
}
inputStream.close();
outputStream.close();
} catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
2.2方式二
利用到了commons-io-2.4-sources.jar包中的FileUtils.copyURLToFile方法。
public static void method2(String urllink){
try {
URL httpurl = new URL(urllink);
File file = new File(“/Users/loongshawn/Downloads/Penguins.jpg”);
FileUtils.copyURLToFile(httpurl, file);
} catch (MalformedURLException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
3.效果展示
测试demo如下,提供了两种文件下载的方式,上述两种方式均测试可用,但有一点需要说明,OSS文件有访问权限设置,本例中的OSS没有设置访问限制。
public static void main(String[] args){
System.out.println(“HelloWorld!”);
String urllink = “http://XXXX/attachment/201704/06/20170406163542/20170406Penguins.jpg”;
method1(urllink);
method2(urllink);
}
public static void method1(String urllink){
try {
URL url = new URL(urllink);
//打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
InputStream in = url.openStream();
download(in);
} catch (IOException e){
}
}
public static void method2(String urllink){
try {
URL httpurl = new URL(urllink);
File file = new File(“/Users/loongshawn/Downloads/Penguins.jpg”);
FileUtils.copyURLToFile(httpurl, file);
} catch (MalformedURLException e){
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}
下载结果: