今天在做文件下载时,通过远程url下载文件保存在本地时碰到个问题,通过io读取文件时死活不能到文件,不是内容不对就是压根没下载,代码执行都没有问题,记录一下解决问题的方法;
/**
* 下载文件至本地并上传到服务器
*
* @author zxx
* @throws DAOException
* @throws FileNotFoundException
* @throws MalformedURLException
* @date 2018年9月6日
*/
public Map downloadFile(String type, String id, String caseid, String filename) throws Exception {
String defaultpath = this.getDefaultPath() == null ? "" : getDefaultPath();
String fileurl = defaultpath.endsWith("/") ? defaultpath + String.valueOf(caseid) + "/"
: defaultpath + "/" + String.valueOf(caseid) + "/";
FileTools.createDir(fileurl);
Map<String, Object> map = new HashMap<String, Object>();
URL url = new URL("http://59.195.128.11:8680/WebDiskServerDemo/doc?Type=" + type + "&doc_id=" + id);
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
// 读文件流
DataInputStream in = new DataInputStream(urlCon.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(fileurl + filename));
byte[] buffer = new byte[2048];
int count = 0;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
out.close();
in.close();
map.put("length", urlCon.getContentLength());
map.put("fileurl", fileurl);
return map;
}