Commit fb09a8c0 authored by 13540823418's avatar 13540823418

兼容本地绝对路径文件读取,采用file标准协议读取文件

parent 4c708f3c
...@@ -33,7 +33,6 @@ public class DownloadUtils { ...@@ -33,7 +33,6 @@ public class DownloadUtils {
private static final String URL_PARAM_FTP_USERNAME = "ftp.username"; private static final String URL_PARAM_FTP_USERNAME = "ftp.username";
private static final String URL_PARAM_FTP_PASSWORD = "ftp.password"; private static final String URL_PARAM_FTP_PASSWORD = "ftp.password";
private static final String URL_PARAM_FTP_CONTROL_ENCODING = "ftp.control.encoding"; private static final String URL_PARAM_FTP_CONTROL_ENCODING = "ftp.control.encoding";
private static final String[] URL_PARAM_LOCALURL_START={"c:","d:","e:","f:","g:","/"};
/** /**
* @param fileAttribute fileAttribute * @param fileAttribute fileAttribute
...@@ -56,26 +55,20 @@ public class DownloadUtils { ...@@ -56,26 +55,20 @@ public class DownloadUtils {
dirFile.mkdirs(); dirFile.mkdirs();
} }
try { try {
if(isLocalUrl(urlStr)){ URL url = new URL(urlStr);
byte[] bytes = getBytesFromLocalUrl(urlStr); if (url.getProtocol() != null && (url.getProtocol().toLowerCase().startsWith("file")||url.getProtocol().toLowerCase().startsWith("http"))) {
byte[] bytes = getBytesFromUrl(urlStr);
OutputStream os = new FileOutputStream(new File(realPath)); OutputStream os = new FileOutputStream(new File(realPath));
saveBytesToOutStream(bytes, os); saveBytesToOutStream(bytes, os);
}else{ } else if (url.getProtocol() != null && "ftp".equals(url.getProtocol().toLowerCase())) {
URL url = new URL(urlStr); String ftpUsername = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_USERNAME);
if (url.getProtocol() != null && url.getProtocol().toLowerCase().startsWith("http")) { String ftpPassword = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_PASSWORD);
byte[] bytes = getBytesFromUrl(urlStr); String ftpControlEncoding = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_CONTROL_ENCODING);
OutputStream os = new FileOutputStream(new File(realPath)); FtpUtils.download(fileAttribute.getUrl(), realPath, ftpUsername, ftpPassword, ftpControlEncoding);
saveBytesToOutStream(bytes, os); } else {
} else if (url.getProtocol() != null && "ftp".equals(url.getProtocol().toLowerCase())) { response.setCode(1);
String ftpUsername = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_USERNAME); response.setContent(null);
String ftpPassword = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_PASSWORD); response.setMsg("url不能识别url" + urlStr);
String ftpControlEncoding = fileUtils.getUrlParameterReg(fileAttribute.getUrl(), URL_PARAM_FTP_CONTROL_ENCODING);
FtpUtils.download(fileAttribute.getUrl(), realPath, ftpUsername, ftpPassword, ftpControlEncoding);
} else {
response.setCode(1);
response.setContent(null);
response.setMsg("url不能识别url" + urlStr);
}
} }
response.setContent(realPath); response.setContent(realPath);
response.setMsg(fileName); response.setMsg(fileName);
...@@ -111,21 +104,6 @@ public class DownloadUtils { ...@@ -111,21 +104,6 @@ public class DownloadUtils {
} }
} }
public byte[] getBytesFromLocalUrl(String urlStr) throws IOException {
File file = new File(urlStr);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
byte[] data = bos.toByteArray();
bos.close();
return data;
}
public void saveBytesToOutStream(byte[] b, OutputStream os) throws IOException { public void saveBytesToOutStream(byte[] b, OutputStream os) throws IOException {
os.write(b); os.write(b);
os.close(); os.close();
...@@ -195,16 +173,4 @@ public class DownloadUtils { ...@@ -195,16 +173,4 @@ public class DownloadUtils {
} }
} }
} }
/**
* @param url url
* @return 是否是本地文件的绝对路径
*/
private boolean isLocalUrl(String url){
for(String str:URL_PARAM_LOCALURL_START){
if(url.toLowerCase().startsWith(str))
return true;
}
return false;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment