public Boolean download(HttpServletResponse response,String localPath,String fileName){
InputStream inputStream = null;
OutputStream outputStream = null;
boolean flag = false;
try {
// localPath是指欲下载的文件的路径。
File file = new File(localPath+fileName);
// 以流的形式下载文件
inputStream = new FileInputStream(file);
byte[]buffer = getBytes(inputStream);
inputStream.close();
// 清空response
response.reset();
// 设置response的Header,此处要对中文进行编码处理。
response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
response.addHeader("Content-Length", "" + file.length());
outputStream = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
flag = true;
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException ex) { }
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException ex) { }
}
}
return flag;
InputStream inputStream = null;
OutputStream outputStream = null;
boolean flag = false;
try {
// localPath是指欲下载的文件的路径。
File file = new File(localPath+fileName);
// 以流的形式下载文件
inputStream = new FileInputStream(file);
byte[]buffer = getBytes(inputStream);
inputStream.close();
// 清空response
response.reset();
// 设置response的Header,此处要对中文进行编码处理。
response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
response.addHeader("Content-Length", "" + file.length());
outputStream = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
flag = true;
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException ex) { }
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException ex) { }
}
}
return flag;
}
public static byte[] getBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
byte[] block = new byte[512];
while (true) {
int readLength = inputStream.read(block);
if (readLength == -1) break;// end of file
byteArrayOutputStream.write(block, 0, readLength);
}
byte[] retValue = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
return retValue;
}