java文件下载以及服务器文件存储位置获取和存储位置
2017-02-04 00:00
411 查看
@RequestMapping("annlReadme2.html") public String annlReadme2(ModelMap modelMap, HttpServletRequest request,HttpServletResponse response) { String fileName="222.doc"; String showName="111.doc"; BufferedInputStream in = null; BufferedOutputStream out = null; String rootpath = request.getSession().getServletContext().getRealPath("/"); try { showName= new String(showName.getBytes("gb2312"), "ISO8859-1" ); File f = new File(rootpath + "/download/" + fileName); response.setContentType("application/msword"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + showName); response.setHeader("Content-Length", String.valueOf(f.length())); in = new BufferedInputStream(new FileInputStream(f)); out = new BufferedOutputStream(response.getOutputStream()); byte[] data = new byte[1024]; int len = 0; while (-1 != (len=in.read(data, 0, data.length))) { out.write(data, 0, len); } } catch (Exception e) { response.reset(); e.printStackTrace(); } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } }catch (Exception e){ System.out.print(" error"); } } return null; }
下面是文件的路径存放点
关键核心代码
String url = request.getSession().getServletContext().getRealPath("download/");
上面的获取到了文件存放的位置
OutputStream outputStream = null; try { File file = new File(bookRouteURL);//bookRoute文件路径 String fileName = file.getName(); //流形式下载文件 InputStream inputStream = new BufferedInputStream(new FileInputStream(bookRouteURL));//bookRoute文件路径 byte[] buffer = new byte[inputStream.available()];//返回可以读取的字节数的估计值 inputStream.read(buffer); inputStream.close(); // 清空response response.reset(); //根据浏览器类型选择转码 if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){ fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 } else { fileName = URLEncoder.encode(fileName, "UTF-8"); } //设置header response.addHeader("Content-Disposition", "attachment;filename=" + fileName); response.addHeader("Content-Length", "" + file.length()); response.setContentType("application/octet-stream");//二进制流,不知道下载文件类型 outputStream = new BufferedOutputStream(response.getOutputStream()); outputStream.write(buffer); } catch (IOException e) { e.printStackTrace(); } finally { //关闭流 if (outputStream != null){ try { outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- Android连接服务器,从服务器获取数据,以及从服务器下载文件(单,多线程)
- Java连接FTP服务器,并上传或下载以及删除ftp服务器中的文件
- [Java Web]服务器获取远程文件并Zip打包给客户端下载
- java将获取到的file文件下载到任意位置
- JAVA获取JVM内存使用以及服务器CPU,硬盘使用方法
- JAVA获取文件本身所在的磁盘位置
- Java乔晓松-Struts2中文件上传和多文件上传以及获取HttpServletRequest / HttpSession / ServletContext / HttpServletRespons
- JAVA 读取 制定路径的 XML 文件 和 获取 服务器路径
- java在ftp服务器下载文件
- java版客户端与服务器的socket通信以及上传下载
- java 获取网络servelt 返回下载文件大小
- Silverlight获取显示分辨率,下载服务器文件
- java从服务器下载xls文件到客户端
- Java项目中读取properties文件,以及六种获取路径的方法
- Java乔晓松-Struts2中文件上传和多文件上传以及获取HttpServletRequest / HttpSession / ServletContext / HttpServletRespon
- jsp页面点击下载文件 java方式(服务器上带路径文件 以文件流输出)
- java 通过 URL 类和 URLConnection类 以及输入流实现文件下载功能
- java下载文件在各个浏览器差异 以及中文乱码解决
- 解决java网络下载获取不到文件长度
- java做的比较完善的FTP上传下载文件服务器源码