-------------------------------------------------------------------------以上内容转自http://blog.csdn.net/longshengguoji/article/details/39433307--------------------------------------------------------
此外,还有一种下载情况-------------下载其他服务器上的文件
此时,需要使用http将其他服务器文件保存至本地,然后如果有下载需求再另行下载操作。
如下代码实现从其他服务器保存代码至本地:
public class FileUtilz {
public boolean saveUrlAs(String photoUrl, String fileName) {
// 此方法只能用户HTTP协议
System.out.println("photoUrl = " + photoUrl);
System.out.println("fileName = " + fileName);
try {
URL url = new URL(photoUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
DataInputStream in = new DataInputStream(connection.getInputStream());
DataOutputStream out = new DataOutputStream(new FileOutputStream(fileName));
byte[] buffer = new byte[4096];
int count = 0;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
out.close();
in.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public String getDocumentAt(String urlString) {
// 此方法兼容HTTP和FTP协议
StringBuffer document = new StringBuffer();
try {
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
document.append(line + "
");
}
reader.close();
} catch (MalformedURLException e) {
System.out.println("Unable to connect to URL: " + urlString);
} catch (IOException e) {
System.out.println("IOException when connecting to URL: " + urlString);
}
return document.toString();
}
public static void main(String[] args) {
FileUtilz t = new FileUtilz();
String photoUrl = "http://61.178.11.86:9330/agengr/test.jpg";
String fileName = photoUrl.substring(photoUrl.lastIndexOf("/"));
String filePath = "D:/aaaaa";
boolean flag = t.saveUrlAs(photoUrl, filePath + fileName);
System.out.print("下载状态:" + flag);
}
}
如需下载,代码类似如下:
public String downloadInvoice(){
OutputStream outp = null;
FileInputStream in = null;
try {
Assert.notNull(downloadUrl);
FileUtilz t = new FileUtilz();
String fileName = downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1, downloadUrl.length());
String filePath = "D:/aaaaa/" + fileName;
boolean flag = t.saveUrlAs(downloadUrl, filePath);
if(flag){
fileName = URLEncoder.encode(fileName, "UTF-8");
getReponse().addHeader("Content-Disposition", "attachment;filename=" + fileName);
outp = getReponse().getOutputStream();
in = new FileInputStream(filePath);
byte[] b = new byte[1024];
int i = 0;
while ((i = in.read(b)) > 0) {
outp.write(b, 0, i);
}
outp.flush();
}else {
logger.error("下载失败。。。");
}
} catch (Exception e) {
logger.error("下载发票出错", e);
} finally {
try {
if (in != null) {
in.close();
in = null;
}
} catch (Exception e) {
logger.error("下载发票,关闭输入输出流出错", e);
}
}
return null;
}