var myform = $("<form></form>");
myform.attr('method','post');
myform.attr('action',BASEPATH + "ceshi/downloadExcel");
var fileName = $("<input type='hidden' name='fileName' />")
fileName.attr('value', "test.xlsx");
myform.append(fileName);
myform.appendTo('body').submit();
public void downloadSingle(HttpServletRequest request, HttpServletResponse response) throws IOException {
String fileName = "a.png";
String filePath = "E:\\util\\"+fileName;
InputStream inStream = new FileInputStream(filePath);
response.reset();
response.setContentType("bin");
response.setContentType("application/octet-stream; charset=utf-8");
fileName = URLEncoder.encode(fileName, "UTF-8");
if (fileName.length() > 150) {
String guessCharset = "gb2312";
fileName = new String(fileName.getBytes(guessCharset), "ISO8859-1");
}
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
byte[] b = new byte[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
response.getOutputStream().write(b, 0, len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@ResponseBody
@RequestMapping(value = "/downloadExcel", method = RequestMethod.POST)
public void downloadExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {
String fileName = request.getParameter("fileName");
String filePath = "E:\\util\\"+fileName;
response.setCharacterEncoding("UTF-8");
fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
fileName = fileName.replaceAll("\\+", "%20");
response.setHeader("Cache-control", "private");
response.setHeader("Cache-Control", "maxage=3600");
response.setHeader("Pragma", "public");
response.setContentType("application/vnd.ms-excel");
response.setContentType("application/octet-stream;charset=UTF-8;");
response.setHeader("Accept-Ranges", "bytes");
response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\"");
ServletOutputStream out = response.getOutputStream();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(new File(filePath)));
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (final IOException e) {
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
public static void downloadFile(List<String> nameList, HttpServletRequest request, HttpServletResponse response) {
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
String downloadName = "测试.zip";
String agent = request.getHeader("USER-AGENT");
try {
if (agent.contains("MSIE")||agent.contains("Trident")) {
downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
} else {
downloadName = new String(downloadName.getBytes("UTF-8"),"ISO-8859-1");
}
} catch (Exception e) {
e.printStackTrace();
}
response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
ZipOutputStream zipos = null;
try {
zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
zipos.setMethod(ZipOutputStream.DEFLATED);
} catch (Exception e) {
e.printStackTrace();
}
DataOutputStream os = null;
for (String fileName : nameList) {
String filePath = "E:\\util\\" + "\\"+fileName;
File file = new File(filePath);
if (!file.exists()) {
throw new RuntimeException("文件已不存在");
}else{
try {
zipos.putNextEntry(new ZipEntry(fileName));
os = new DataOutputStream(zipos);
InputStream is = new FileInputStream(file);
byte[] b = new byte[100];
int length = 0;
while((length = is.read(b))!= -1){
os.write(b, 0, length);
}
is.close();
zipos.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
}
}
try {
os.flush();
os.close();
zipos.close();
} catch (IOException e) {
e.printStackTrace();
}
}