实现文件下载的java代码

使用 Java 实现文件下载的全面指南 Java 提供了多种方式来实现 HTTP 文件下载,例如使用 HttpURLConnection 或第三方库(如 Apache HttpClient)。在 Java 中实现文件下载是一个常见的需求,尤其是在开发 Web 应用程序时。本文将详细介绍如何使用 Java 实现文件下载功能,涵盖从本地文件系统下载文件以及通过 HTTP 下载文件的两种场景。如果文件存储在本地文件系统中,可以通过 Java 的 InputStream 和 OutputStream 实现文件下载。 阅读详情
Java代码
  1.   
  2. //这是实现下载类(servlet),具体思路代码如下:   
  3. //也可连接数据库   
  4. package com.message;   
  5.   
  6. import javax.servlet.*;   
  7. import javax.servlet.http.*;   
  8. import java.io.*;   
  9. import java.util.*;   
  10.   
  11. public class FileDownServlet extends HttpServlet {   
  12.     private static final String CONTENT_TYPE = "text/html; charset=GBK";   
  13.   
  14.     //Initialize global variables   
  15.     public void init() throws ServletException {   
  16.     }   
  17.   
  18.     //Process the HTTP Get request   
  19.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws  
  20.             ServletException, IOException {   
  21.         response.setContentType(CONTENT_TYPE);   
  22.         //得到下载文件的名字   
  23.         //String filename=request.getParameter("filename");   
  24.            
  25.         //解决中文乱码问题   
  26.         String filename=new String(request.getParameter("filename").getBytes("iso-8859-1"),"gbk");   
  27.   
  28.         //创建file对象   
  29.         File file=new File("F://book//WebRoot//"+filename);   
  30.   
  31.         //设置response的编码方式   
  32.         response.setContentType("application/x-msdownload");   
  33.   
  34.         //写明要下载的文件的大小   
  35.         response.setContentLength((int)file.length());   
  36.   
  37.         //设置附加文件名   
  38.        // response.setHeader("Content-Disposition","attachment;filename="+filename);   
  39.            
  40.         //解决中文乱码   
  41.     response.setHeader("Content-Disposition","attachment;filename="+new String   
  42.   
  43. (filename.getBytes("gbk"),"iso-8859-1"));           
  44.   
  45.         //读出文件到i/o流   
  46.         FileInputStream fis=new FileInputStream(file);   
  47.         BufferedInputStream buff=new BufferedInputStream(fis);   
  48.   
  49.         byte [] b=new byte[1024];//相当于我们的缓存   
  50.   
  51.         long k=0;//该值用于计算当前实际下载了多少字节   
  52.   
  53.         //从response对象中得到输出流,准备下载   
  54.   
  55.         OutputStream myout=response.getOutputStream();   
  56.   
  57.         //开始循环下载   
  58.   
  59.         while(k<file.length()){   
  60.   
  61.             int j=buff.read(b,0,1024);   
  62.             k+=j;   
  63.   
  64.             //将b中的数据写到客户端的内存   
  65.             myout.write(b,0,j);   
  66.   
  67.         }   
  68.   
  69.         //将写入到客户端的内存的数据,刷新到磁盘   
  70.         myout.flush();   
  71.   
  72.     }   
  73.   
  74.     //Process the HTTP Post request   
  75.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws  
  76.             ServletException, IOException {   
  77.         doGet(request, response);   
  78.     }   
  79.   
  80.     //Clean up resources   
  81.     public void destroy() {   
  82.     }   
  83. }  
//这是实现下载类(servlet),具体思路代码如下:
//也可连接数据库
package com.message;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class FileDownServlet extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=GBK";

    //Initialize global variables
    public void init() throws ServletException {
    }

    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        //得到下载文件的名字
        //String filename=request.getParameter("filename");
        
        //解决中文乱码问题
        String filename=new String(request.getParameter("filename").getBytes("iso-8859-1"),"gbk");

        //创建file对象
        File file=new File("F://book//WebRoot//"+filename);

        //设置response的编码方式
        response.setContentType("application/x-msdownload");

        //写明要下载的文件的大小
        response.setContentLength((int)file.length());

        //设置附加文件名
       // response.setHeader("Content-Disposition","attachment;filename="+filename);
        
        //解决中文乱码
    response.setHeader("Content-Disposition","attachment;filename="+new String

(filename.getBytes("gbk"),"iso-8859-1"));        

        //读出文件到i/o流
        FileInputStream fis=new FileInputStream(file);
        BufferedInputStream buff=new BufferedInputStream(fis);

        byte [] b=new byte[1024];//相当于我们的缓存

        long k=0;//该值用于计算当前实际下载了多少字节

        //从response对象中得到输出流,准备下载

        OutputStream myout=response.getOutputStream();

        //开始循环下载

        while(k<file.length()){

            int j=buff.read(b,0,1024);
            k+=j;

            //将b中的数据写到客户端的内存
            myout.write(b,0,j);

        }

        //将写入到客户端的内存的数据,刷新到磁盘
        myout.flush();

    }

    //Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        doGet(request, response);
    }

    //Clean up resources
    public void destroy() {
    }
}




Java代码
  1.   
  2. //这是javabean写法 ,主要是实现和数据库连接的,如果没有连接数据库,就可直接不要这   
  3. package com;   
  4.   
  5. public class MessageBean {   
  6.  private String Message;   
  7.   
  8.  public String getMessage() {   
  9.   return Message;   
  10.  }   
  11.   
  12.  public void setMessage(String message) {   
  13.   Message = message;   
  14.  }   
  15. }  
//这是javabean写法 ,主要是实现和数据库连接的,如果没有连接数据库,就可直接不要这
package com;

public class MessageBean {
 private String Message;

 public String getMessage() {
  return Message;
 }

 public void setMessage(String message) {
  Message = message;
 }
}

 

Java代码
  1. //HTML页面载入写发,也可连接数据库(案例代码也在)   
  2. <%@ page language="java" import="java.util.*,com.message.*" pageEncoding="gbk"%>   
  3. <jsp:directive.page import="com.MessageBean;"/>   
  4. <%   
  5. String path = request.getContextPath();   
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";   
  7. %>   
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  10. <html>   
  11.   <head>   
  12.     <base href="<%=basePath%>">   
  13.        
  14.     <title>My JSP 'book.jsp' starting page</title>   
  15.        
  16.  <meta http-equiv="pragma" content="no-cache">   
  17.  <meta http-equiv="cache-control" content="no-cache">   
  18.  <meta http-equiv="expires" content="0">       
  19.  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">   
  20.  <meta http-equiv="description" content="This is my page">   
  21.  <!--   
  22.  <link rel="stylesheet" type="text/css" href="styles.css">   
  23.  -->   
  24.   
  25.   </head>   
  26.      
  27.   <body>   
  28.     <!--  <a href="java.rar">5.1下载书--java</a> <br>-->   
  29.     <%   
  30.   //Vector vv=(Vector)session.getAttribute("message");   
  31.   //for(int i=0;i<vv.size();i++){   
  32.    // MessagesBean mb=(MessagesBean)vv.get(i);   
  33.    // out.println("<tr>");   
  34.    // out.println("<td>"+mb.getSender()+"</td>");   
  35.    // out.println("<td>"+mb.getMess_time()+"</td>");   
  36.    // out.println("<td>"+mb.getGeter()+"</td>");   
  37.    // out.println("<td>"+mb.getMess_content()+"</td>");   
  38. String filename=null;   
  39. session.setAttribute("java.rar",filename);   
  40.     //取得文件名   
  41.    // filename=getFilepath().substring(mb.getFilepath().lastIndexOf("/")+1);   
  42.     out.println("<td><a href=FileDownServlet?filename=java.rar>5.1下载书--java</a></td>");//java.rar这个可以改成变量   
  43.     out.println("<td><a href=FileDownServlet?filename=dos.rar>dos视频教程</a></td>");   
  44.     out.println("<td><a href=FileDownServlet?filename=常用DOS命令.rar>常用DOS命令</a></td>");   
  45.     out.println("</tr>");   
  46.  // }   
  47.   %>   
  48.   </body>   
  49. </html>  
//HTML页面载入写发,也可连接数据库(案例代码也在)
<%@ page language="java" import="java.util.*,com.message.*" pageEncoding="gbk"%>
<jsp:directive.page import="com.MessageBean;"/>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'book.jsp' starting page</title>
    
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">    
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->

  </head>
  
  <body>
    <!--  <a href="java.rar">5.1下载书--java</a> <br>-->
    <%
  //Vector vv=(Vector)session.getAttribute("message");
  //for(int i=0;i<vv.size();i++){
   // MessagesBean mb=(MessagesBean)vv.get(i);
   // out.println("<tr>");
   // out.println("<td>"+mb.getSender()+"</td>");
   // out.println("<td>"+mb.getMess_time()+"</td>");
   // out.println("<td>"+mb.getGeter()+"</td>");
   // out.println("<td>"+mb.getMess_content()+"</td>");
String filename=null;
session.setAttribute("java.rar",filename);
    //取得文件名
   // filename=getFilepath().substring(mb.getFilepath().lastIndexOf("/")+1);
    out.println("<td><a href=FileDownServlet?filename=java.rar>5.1下载书--java</a></td>");//java.rar这个可以改成变量
    out.println("<td><a href=FileDownServlet?filename=dos.rar>dos视频教程</a></td>");
    out.println("<td><a href=FileDownServlet?filename=常用DOS命令.rar>常用DOS命令</a></td>");
    out.println("</tr>");
 // }
  %>
  </body>
</html>

 

Java代码
  1. //这是web.xml配置文件,这很重要,不然,很难实现哦   
  2. <?xml version="1.0" encoding="UTF-8"?>   
  3. <web-app version="2.4"    
  4.  xmlns="http://java.sun.com/xml/ns/j2ee"    
  5.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  6.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
  7.  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
  8.   <servlet>   
  9.     <description>This is the description of my J2EE component</description>   
  10.     <display-name>This is the display name of my J2EE component</display-name>   
  11.     <servlet-name>FileDownServlet</servlet-name>   
  12.     <servlet-class>com.message.FileDownServlet</servlet-class>   
  13.   </servlet>   
  14.   
  15.   <servlet-mapping>   
  16.     <servlet-name>FileDownServlet</servlet-name>   
  17.     <url-pattern>/FileDownServlet</url-pattern>   
  18.   </servlet-mapping>   
  19. </web-app> 
java下载文件(附完整源码) 阅读详情

相关推荐

postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license

最近在工作中使用postgresql 和 timescaledb 的time_bucket_gapfill()函数 报错,让更换license,在网上找了一大圈,没有找到,最后解决了这个问题,这篇文章记录我的解决办法查看timescaledb.license参数命令:show timescaledb.license;修改命令: 结果不行,报错如下:lter system set timescaledb.license=‘timescale’;那只能换包了如果出现上面那种情况,那我们只能先从官网上下载带 '

yang_z_1的博客 3250

Java下载文件的四种方式详细代码

java下载文件

Super_Xiaoma的博客 1万+

nnDetection实战:手把手教你用Python在自家电脑上跑通第一个肺结节检测模型

本文详细介绍了如何使用nnDetection框架在普通电脑上实现肺结节检测模型的搭建与运行。从环境配置、数据预处理到模型训练与推理,手把手教你完成医学图像检测的全流程,特别适合初学者入门医学AI领域。

weixin_32377497的博客 331

java 实现文件下载的功能, 用代码举例至少3个案例

【代码】java 实现文件下载的功能, 用代码举例至少3个案例。

u011091199的博客 2257

EtherCat 从站开发中遇到的问题分享

EtherCat从站 AX58100

yu_arius的博客 2059

R语言绘制森林图

运行上述代码后,将会生成一个标题为"森林图示例"的森林图。通过以上代码示例,你可以根据自己的数据集和需求创建定制的森林图。在实际应用中,你还可以进一步调整图形的样式,添加图例、坐标轴标签等,以使森林图更加美观和易于理解。在数据可视化领域,森林图是一种常用的图形类型,用于展示多个分类变量之间的关系。本文将介绍如何使用R语言创建森林图,并提供相应的源代码示例。森林图通常由垂直的线段表示不同类别的观测值,并且线段的长度表示数值变量的大小。上述代码中,我们为不同的类别分别指定了蓝色和红色作为颜色映射关系。

TechNovaX的博客 1045

java linux 文件下载_实现文件下载的Java代码

实现文件下载的Java代码//这是实现下载类(servlet),具体思路代码如下://也可连接数据库package com.message;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;public class FileDownServlet extends HttpSe...

weixin_40009472的博客 571

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7018

java文件下载代码_实现文件下载的java代码

实现文件下载的java代码//这是实现下载类(servlet),详细思路代码例如以下://也可连接数据库package com.message;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;public class FileDownServlet extends Http...

weixin_39932479的博客 519

vue2学习笔记2-老规矩,从Hello World开始,了解Vue实例和模板

想要把“Hello,World”放置在页面上,首先需要准备一个HTML的块级元素div,来承接内容。

l_q_l的专栏 1258

STM32 USB键盘实现指南

在STM32上实现键盘功能可以通过USB HID(人机接口设备)协议来实现,使STM32设备能被计算机识别为标准键盘。通过上述步骤,您可以在STM32上实现一个功能完整的USB键盘。关键点包括:正确配置USB HID设备实现键盘矩阵扫描处理按键事件并生成HID报告优化按键响应和消抖处理添加额外功能如宏键和LED反馈这个实现可以作为基础,进一步扩展为游戏键盘、宏键盘或特殊输入设备。

suny8的专栏 973

java文件下载代码_Java代码实现文件下载

昨天晚上写了一篇文件上传的,今天上午把文件下载弄了一下,还是commons中的包commons-fileupload.jar、commons-io.jar,下载位置就不说了,apache网站上找这是一个web工程,下面有个截图仅供参考,下面是index.jsp代码View Codeshowfile.jspView Code文件下载请选择您要下载的文件:${fileName }web.xml,这个没...

weixin_42361611的博客 1376

【华为OD机考真题】- 构成的正方形数量(B卷-100分)(Java版)

🔔本文收录于「最新最全华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 1349

java功能代码下载_java实现文件下载功能代码

java实现文件下载功能代码:http://www.52itstyle.com/thread-4846-1-1.html1.[代码][Java]代码package com.fh.util;import java.io.BufferedOutputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.se...

weixin_42601134的博客 162

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java 文件下载代码_java代码实现文件的下载功能

昨天,根据需求文档的要求,自己要做一个关于文件下载的功能,从学校毕业已经很久了,自己好长时间都没有做过这个了,于是自己上网百度,最终开发出来的代码如下:哦!对了,我先说一下我的思路,首先需要获取服务器上文件存储的路径,然后将文件下载到本地。自己是先查询表中的文件的路径。LPEdorAnnex表:(这是自己用到的表-其中用到的字段是AnnexParth)下面是自己的代码,自己写在了jsp页面中,因为...

weixin_39543655的博客 385

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java web下载文件代码_javaweb 实现文件下载的方法及实例代码

javaweb 实现文件下载不要再说用标签下载了,这个会把文件打开而不是下载例如:下载如果我这样写,浏览器就会把图片直接打开,除非是一个浏览器打不开的文件所以我们还是要用到java本身的文件读写来进行文件的下载下载package com.cpsec.tang.chemical.action;import java.io.File;import java.io.FileInputStream;imp...

weixin_30346025的博客 391

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java实现功能实现代码下载,java实现文件下载功能代码

import java.io.BufferedOutputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.http.HttpServletResponse;/*** java实现文件下载功能代码* 创建时间:2014年12月23日* @version*/public class...

weixin_31951239的博客 108

java ftp下载文件源码_java实现ftp文件下载的源代码

这几天做的一个项目中用到了ftp文件传输,用java实现了ftp文件的下载。一、win7下搭建ftp服务器二、用java实现ftp文件下载下载完成后,新建java工程,导入commons-net-3.3.jar包,源代码如下:import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import j...

weixin_34651547的博客 186

用Java代码实现从网页下载数据至文件中

用Java代码实现从网页下载数据至文件中

m0_50831101的博客 203

Java代码实现FTP文件下载

下载commons-net-1.4.1.jar包,放到lib下,并加载到.classpath文件中 package common; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io...

weixin_44205185的博客 8838

Java代码实现文件下载

昨天晚上写了一篇文件上传的,今天上午把文件下载弄了一下,还是commons中的包 commons-fileupload.jar、commons-io.jar,下载位置就不说了,apache网站上找 这是一个web工程,下面有个截图 仅供参考,下面是index.jsp代码 View Code <%@ page language="java" import="java.uti...

weixin_30737433的博客 684

java代码实现文件上传、下载、删除处理。

这里大家注意一下。看自己的需求,我这里兼容多文件所以用数组接收。然后遍历files 获取文件,下面这段代码是判断文件在所在目录是否存在,如果不存在就创建对应的目录。就是将文件存放到对应的服务器,这里有一点需要说明一下,如果我们上传重复的文件会怎么样么?上传重复的文件不会报错,后上传的文件会直接覆盖已经上传的文件。整体代码就是这样。现在就可以实现文件的上传操作。

qq_33013017的博客 1472

java文件下载前后端代码实现

后端 @WebServlet("/downloadServlet") public class DownloadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOEx...

weixin_45813213的博客 2566
上一篇: java struts实现文件下载
下一篇: java 实现下载
AngleKill
博客等级 码龄18年 20粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值