java根据输入的文件路径和文件名,web服务器返回一个输出流
@RequestMapping("/download")
private void download(@RequestBody Map<String,Object> requestJsonMap, HttpServletResponse response){
String directory = (String) requestJsonMap.get("directory");
String filename = (String) requestJsonMap.get("filename");
try {
File file = new File(new StringBuilder().append(this.filaPath).append(directory != null ? new StringBuilder().
append(directory).append("\\").toString() : "").append(filename).toString());
log.info(file.getPath());
String fileName = file.getName();
String ext = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
log.info(new StringBuilder().append("文件后缀名:").append(ext).toString());
if (!file.exists()) {
response.reset();
Map map = new HashMap();
map.put("success", Boolean.valueOf(false));
map.put("message", new StringBuilder().append("找不到文件 ").append(filename).toString());
String jsonMap = new ObjectMapper().writeValueAsString(map);
response.setContentType("application/json;charset=UTF-8");
response.getWriter().println(jsonMap);
} else {
FileInputStream fileInputStream = new FileInputStream(file);
InputStream fis = new BufferedInputStream(fileInputStream);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
response.setCharacterEncoding("UTF-8");
response.addHeader("Content-Disposition", new StringBuilder().append("attachment;filename=").append(URLEncoder.encode(fileName, "UTF-8")).toString());
response.addHeader("Content-Length", new StringBuilder().append("").append(file.length()).toString());
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
*** 如果在浏览器中加载这个地址,则会直接触动流浪器,执行下载操作

浙公网安备 33010602011771号