Httpclient 实现文件下载
点关注不迷路,欢迎再访!
精简博客内容,尽量已行业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。
一.服务端
public void writFileToResponse(FileInfo fileInfo, HttpServletResponse response) {
FileInputStream input = null;
String fileName = fileInfo.getFileName() + "." + fileInfo.getFileExt();
try {
File file = new File(fileInfo.getFileFullPath());
response.setContentLength((int) file.length());
response.setContentType(FileContentType.getContentType(fileInfo.getFileExt()));
response.setHeader("Content-Disposition","inline; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
input = new FileInputStream(file);
OutputStream sout = response.getOutputStream();
long start = System.currentTimeMillis();
FileCopyUtils.copy(input, sout);
long end1 = System.currentTimeMillis();
logger.info("FileCopyUtils.copy总时间:" + (end1 - start));
sout.flush();
} catch (FileNotFoundException e) {
logger.error(e);
} catch (IOException e) {
logger.warn(e);
} finally {
try {
if (input != null) {
input.close();
}
} catch (IOException e) {
;
}
}
}
FileCopyUtils.copy(input, sout) spring-core核心包
二.客户端
public void testDownloadFile(String url) throws Exception {
String url ="http://XXXXXX/download.do";
PostMethod method = new PostMethod(url);
method.addParameter("fileId", file);
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
int statusCode1 = client.executeMethod(method);
//流文件方式接收一
InputStream input = method.getResponseBodyAsStream();
//接收文件byte数组方式二
byte [] byte = method.getResponseBody();
System.out.println("statusLine>>>" + method.getStatusLine());
method.releaseConnection();
}