`
huoyunshen888
  • 浏览: 83468 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

实现文件下载的java代码

 
阅读更多

//这是实现下载类(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() {
    }
}

//这是javabean写法 ,主要是实现和数据库连接的,如果没有连接数据库,就可直接不要这
package com;

public class MessageBean {
private String Message;

public String getMessage() {
   return Message;
}

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


//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>


//这是web.xml配置文件,这很重要,不然,很难实现哦
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>FileDownServlet</servlet-name>
    <servlet-class>com.message.FileDownServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>FileDownServlet</servlet-name>
    <url-pattern>/FileDownServlet</url-pattern>
</servlet-mapping>
</web-app>


分享到:
评论

相关推荐

    java代码实现文件上传和下载

    在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字

    JAVA实现文件下载的代码

    本篇文章将深入探讨如何使用Java实现文件下载,并基于提供的"JAVA实现文件下载的代码.txt"文件进行解析和解释。 首先,我们需要理解文件下载的基本流程。当用户在浏览器中点击一个下载链接时,请求会被发送到服务器...

    ajax实现java文件下载

    在现代Web应用中,用户对交互性和...总结起来,Ajax实现Java文件下载是一种提高用户体验的有效手段,通过前后端的协同工作,实现了无刷新的文件下载功能。理解并掌握这一技术,对于提升Web应用的交互性具有重要意义。

    JAVA代码实现远程操作服务器文件

    SCPClient是一个基于ssh的文件传输协议,可以实现文件的上传和下载。通过使用SCPClient,可以实现远程服务器文件的上传和下载。 5. 使用Session实现远程服务器文件的操作 Session是一个远程服务器文件操作的会话,...

    文件上传下载java代码

    java web开发实现文件上传下载,java代码部分的实现,

    Java代码实现txt文件转pdf文件

    本示例将详细介绍如何使用Java编程语言将一个简单的TXT文本文件转换为PDF格式的文件。这涉及到利用特定库来处理这两种不同格式的文件,以便在各种环境中保持文件的可读性和一致性。 首先,我们需要了解TXT和PDF两种...

    把wsdl文件或地址转化成java代码工具

    将WSDL文件转换为Java代码是为了实现客户端与Web服务之间的交互,让开发者可以更方便地调用和实现服务功能。 【描述】:“在myeclipse下的一个web程序,把wsdl文件转化成java代码” MyEclipse是Eclipse的一个扩展...

    java实现 上传文件代码

    java实现 上传文件代码

    java代码审查规范文档

    Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码、测试过程和注释进行检查。 Code Review主要用来在软件工程过程中改进代码质量,通过Code Review可以达到如下目的: .在...

    JAVA实现抖音代码跳舞源码

    Java 实现抖音代码跳舞源码解析 在编程领域,尤其是移动互联网时代,各种有趣的互动功能被广泛应用,其中“代码跳舞”就是一种极具创意的技术实践。本文将深入探讨如何使用Java语言来实现类似抖音上的代码跳舞效果...

    java使用itext实现pdf文件下载

    现在,我们转向主题,即如何在Java中实现PDF文件的下载。有两种主要的方式: 1. **通过系统路径下载**:这种方式适用于后台生成PDF后,直接保存到服务器的某个路径,然后提供URL给用户下载。以下是一个简单的示例:...

    java代码启动tomcat

    下面,我们将详细介绍如何使用 Java 代码来启动 Tomcat 服务器,并实现远程控制 Tomcat。 标题: Java 代码启动 Tomcat 描述: Java 实现 Tomcat 的自启动和关闭,可实现远程控制 Tomcat 标签: Java Tomcat ...

    WebService的WSDL文件生成Java代码工具

    在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...

    java实现模板下载功能

    3. **Java代码**: ```java // 文件名属性 private String downLoadFileName; public String getDownLoadFileName() { return downLoadFileName; } public void setDownLoadFileName(String ...

    Java使用NFS实现上传、下载、读取文件工具类

    2. 文件下载(File Download) 3. 文件读取(File Reading) 4、优点: 封装性:工具类封装了NFS相关的复杂连接、认证和I/O操作细节,使得业务层代码无需关心底层通信协议,只需通过简单API即可操作远程文件。 可...

    java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip

    java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计——java文件传输系统的设计与实现(论文+源代码).zip java毕业设计...

    Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源代码+文档.rar

    Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源代码+文档.rar Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源代码+文档.rar Java开发案例-springboot-10-整合MinIO实现文件上传与下载-源...

    Java实现批量下载

    部分内容展示了实现批量下载的Java代码,该代码使用了ZipOutputStream和FileInputStream来实现文件的压缩和下载。下面是代码的详细解释: 1. 首先,定义了一个方法moredownload(),该方法用于实现批量下载。 2. 在...

    ceb 转 pdf 代码,包含java代码

    ceb 转 pdf 代码,包含java代码

    java代码实现填充word模板生成word合同的实例

    本实例将探讨如何使用Java代码实现填充Word模板并生成Word合同。 首先,我们需要理解Apache POI库。Apache POI是Java平台上的一个开源项目,它允许Java应用程序读取、写入和修改Microsoft Office格式的文件,包括...

Global site tag (gtag.js) - Google Analytics