java 文件下载_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java 文件下载

java 文件下载

 2014/9/28 3:16:31  paulliu88  程序员俱乐部  我要评论(0)
  • 摘要:Java文件下载publicHttpServletResponsedownload(Stringpath,HttpServletResponseresponse){try{//path是指欲下载的文件的路径。Filefile=newFile(path);//取得文件名。Stringfilename=file.getName();//取得文件的后缀名。Stringext=filename.substring(filename.lastIndexOf("."
  • 标签:文件 Java 下载

Java文件下载

??? public HttpServletResponse download(String path, HttpServletResponse response) {
??????? try {
??????????? // path是指欲下载的文件的路径。
??????????? File file = new File(path);
??????????? // 取得文件名
??????????? String filename = file.getName();
??????????? // 取得文件的后缀名。
??????????? String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();

??????????? // 以流的形式下载文件。
??????????? InputStream fis = new BufferedInputStream(new FileInputStream(path));
??????????? byte[] buffer = new byte[fis.available()];
??????????? fis.read(buffer);
??????????? fis.close();
??????????? // 清空response
??????????? response.reset();
??????????? // 设置response的Header
??????????? response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
??????????? response.addHeader("Content-Length", "" + file.length());
??????????? OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
??????????? response.setContentType("application/octet-stream");
??????????? toClient.write(buffer);
??????????? toClient.flush();
??????????? toClient.close();
??????? } catch (IOException ex) {
??????????? ex.printStackTrace();
??????? }
??????? return response;
??? }

??? public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {
??????? // 下载本地文件
??????? String fileName = "Operator.doc".toString(); // 文件的默认保存名
??????? // 读到流中
??????? InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径
??????? // 设置输出的格式
??????? response.reset();
??????? response.setContentType("bin");
??????? response.addHeader("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();
??????? }
??? }

??? public void downloadNet(HttpServletResponse response) throws MalformedURLException {
??????? // 下载网络文件
??????? int bytesum = 0;
??????? int byteread = 0;

??????? URL url = new URL("windine.blogdriver.com/logo.gif");

??????? try {
??????????? URLConnection conn = url.openConnection();
??????????? InputStream inStream = conn.getInputStream();
??????????? FileOutputStream fs = new FileOutputStream("c:/abc.gif");

??????????? byte[] buffer = new byte[1204];
??????????? int length;
??????????? while ((byteread = inStream.read(buffer)) != -1) {
??????????????? bytesum += byteread;
??????????????? System.out.println(bytesum);
??????????????? fs.write(buffer, 0, byteread);
??????????? }
??????? } catch (FileNotFoundException e) {
??????????? e.printStackTrace();
??????? } catch (IOException e) {
??????????? e.printStackTrace();
??????? }
??? }



//支持在线打开文件的一种方式

??? public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
??????? File f = new File(filePath);
??????? if (!f.exists()) {
??????????? response.sendError(404, "File not found!");
??????????? return;
??????? }
??????? BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
??????? byte[] buf = new byte[1024];
??????? int len = 0;

??????? response.reset(); // 非常重要
??????? if (isOnLine) { // 在线打开方式
??????????? URL u = new URL("file:///" + filePath);
??????????? response.setContentType(u.openConnection().getContentType());
??????????? response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
??????????? // 文件名应该编码成UTF-8
??????? } else { // 纯下载方式
??????????? response.setContentType("application/x-msdownload");
??????????? response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
??????? }
??????? OutputStream out = response.getOutputStream();
??????? while ((len = br.read(buf)) > 0)
??????????? out.write(buf, 0, len);
??????? br.close();
??????? out.close();
??? }


?

发表评论
用户名: 匿名