java通过URL下载文件
最近接了个奇葩的需求,从前端传一个url到后台,后台根据url下载文件并解析,然后提交到oss,由于之前没涉及过这类东西,搞得有点懵逼,还好有万能的百度,话不多说,上代码:
import java.io.File;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class DownloadURLFile {
/**
* @param args
*/
public static void main(String[] args) {
String res = downloadFromUrl("http://images.17173.com/2010/www/roll/201003/0301sohu01.jpg","d:/");
System.out.println(res);
}
public static String downloadFromUrl(String url,String dir) {
try {
URL httpurl = new URL(url);
String fileName = getFileNameFromUrl(url);
System.out.println(fileName);
File f = new File(dir + fileName);
FileUtils.copyURLToFile(httpurl, f);
} catch (Exception e) {
e.printStackTrace();
return "Fault!";
}
return "Successful!";
}
/**
* 根据url下载文件
*
* @param url url 文件url
* @param dir dir 文件保存目录
* @return {@link File}
* @author nakey
* @date 2022/02/16
*/
public static File downloadFromUrl(String url, String dir) {
File f = null;
try {
URL httpurl = new URL(url);
String fileName = getFileNameFromUrl(url);
System.out.println(fileName);
f = new File(dir + fileName);
FileUtils.copyURLToFile(httpurl, f);
} catch (Exception e) {
log.error("根据url下载文件失败!", e);
new RuntimeException("下载文件失败");
}
return f;
}
public static String getFileNameFromUrl(String url){
String name = new Long(System.currentTimeMillis()).toString() + ".X";
int index = url.lastIndexOf("/");
if(index > 0){
name = url.substring(index + 1);
if(name.trim().length()>0){
return name;
}
}
return name;
}
}
参考链接:java通过URL下载文件 - 简书https://www.jianshu.com/p/3e1ed28339df