`
kingsui
  • 浏览: 191601 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

一个文件下载的Servlet

    博客分类:
  • Java
阅读更多

把文件目录直接暴露给用户是很不安全的。所以要用Servlet来做,而且这样做,文件的存储方式就更丰富了,可以是从文件系统上取来的,也可以是数据库中经过计算生成的,或者从其它什么稀奇古怪的地方取来的。

public class DownloadServlet extends HttpServlet {
    
private String contentType = "application/x-msdownload";
    
private String enc = "utf-8";
    
private String fileRoot = "";


    
/**
     * 初始化contentType,enc,fileRoot
     
*/
    
public void init(ServletConfig config) throws ServletException {
        String tempStr 
= config.getInitParameter("contentType");
        
if (tempStr != null && !tempStr.equals("")) {
            contentType 
= tempStr;
        }
        tempStr 
= config.getInitParameter("enc");
        
if (tempStr != null && !tempStr.equals("")) {
            enc 
= tempStr;
        }
        tempStr 
= config.getInitParameter("fileRoot");
        
if (tempStr != null && !tempStr.equals("")) {
            fileRoot 
= tempStr;
        }
    }

    
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String filepath 
= request.getParameter("filepath");
        String fullFilePath 
= fileRoot + filepath;
        
/*读取文件*/
        File file 
= new File(fullFilePath);
        
/*如果文件存在*/
        
if (file.exists()) {
            String filename 
= URLEncoder.encode(file.getName(), enc);
            response.reset();
            response.setContentType(contentType);
            response.addHeader(
"Content-Disposition""attachment; filename=\"" + filename + "\"");
            
int fileLength = (int) file.length();
            response.setContentLength(fileLength);
            
/*如果文件长度大于0*/
            
if (fileLength != 0) {
                
/*创建输入流*/
                InputStream inStream 
= new FileInputStream(file);
                
byte[] buf = new byte[4096];
                
/*创建输出流*/
                ServletOutputStream servletOS 
= response.getOutputStream();
                
int readLength;
                
while (((readLength = inStream.read(buf)) != -1)) {
                    servletOS.write(buf, 
0, readLength);
                }
                inStream.close();
                servletOS.flush();
                servletOS.close();
            }
        }
    }


web.xml

    <servlet>
        
<servlet-name>downloadservlet-name>
        
<servlet-class>org.mstar.servlet.DownloadServletservlet-class>
        
<init-param>
            
<param-name>fileRootparam-name>
            
<param-value>d:/tempparam-value>
        
init-param>
        
<init-param>
            
<param-name>contentTypeparam-name>
            
<param-value>application/x-msdownloadparam-value>
        
init-param>
        
<init-param>
            
<param-name>encparam-name>
            
<param-value>utf-8param-value>
        
init-param>
    
servlet>
    
<servlet-mapping>
        
<servlet-name>downloadservlet-name>
        
<url-pattern>/downurl-pattern>
    
servlet-mapping>
分享到:
评论

相关推荐

    servlet上传下载文件

    总结来说,"servlet上传下载文件"是一个使用Java Servlet实现的Web应用程序,允许用户上传文件至服务器,并能够从服务器下载这些文件。这个系统的核心在于Servlet的`doPost`或`doGet`方法,它们处理HTTP请求,读取或...

    servlet文件下载项目

    总结一下,这个"Servlet文件下载项目"展示了如何使用Servlet技术实现一个简单的文件下载服务。通过理解Servlet的工作原理、HTTP响应头的设置以及Java I/O流的使用,我们可以构建出更复杂、更安全的文件下载系统。这...

    文件下载servlet

    文件下载servlet,java文件下载。

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    文件上传与下载servlet

    在IT行业中,文件上传与下载是Web应用中常见的功能,特别是在企业级系统中,例如文档管理系统、在线教育平台等。Servlet作为Java Web开发中的一个重要组件,常被用来处理这些操作。下面将详细介绍如何使用Servlet...

    java servlet实现文件下载

    Java Servlet是一种Java编程语言...通过这个简单的Java Servlet实现,我们可以为用户提供一个安全、可控的文件下载服务。理解这些基本步骤和相关的HTTP概念,将有助于你更好地设计和实现Web应用程序中的文件下载功能。

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    这个链接会指向一个`servlet`,由`servlet`来处理实际的文件读取和下载逻辑。 1. **创建Servlet**:首先,我们需要创建一个自定义的`servlet`,例如`FileDownloadServlet`。在`src`目录下的Java源代码文件中,我们...

    文件上传下载servlet自用

    总的来说,"文件上传下载servlet自用"项目是一个实现Web应用中文件交互的示例,涉及到Servlet、文件I/O操作以及HTTP协议的理解。在实际开发中,这样的功能可以广泛应用于用户资料上传、文件共享、云存储等多种场景。...

    一个简单的servlet容器

    1. **初始化**:Servlet容器在启动时会读取配置文件(如`server.xml`),解析其中的Web应用上下文定义,为每个Web应用创建一个Context对象。Context对象管理着Web应用的生命周期,包括Servlet和JSP的加载、部署和...

    Servlet实现多文件批量下载

    在JSP页面上,你可以创建一个表单让用户选择要下载的文件,或者通过JavaScript、AJAX等方式异步提交文件列表到Servlet。记得在JSP中设置正确的方法(GET或POST)和Servlet的URL。 在实际应用中,为了安全和性能,你...

    Servlet中文件上传和下载

    以下是一个简单的文件下载Servlet示例: ```java @WebServlet("/FileDownloadServlet") public class FileDownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, ...

    servlet-api.jar 下载地址

    Servlet-api.jar是Java Web开发中不可或缺的一个库文件,它包含了Servlet和JSP(JavaServer Pages)规范的API接口。这个库文件主要用于与Web服务器交互,处理HTTP请求,并生成响应。在本文中,我们将深入探讨Servlet...

    基于servlet的文件下载代码

    本文将详细介绍一个基于Servlet的文件下载代码示例,并对其实现原理进行深入分析。 #### 二、技术背景 在Java Web开发中,Servlet是一种重要的技术,用于处理HTTP请求并返回响应。Servlet由Sun Microsystems公司...

    一个简单的servlet示例

    在这个简单的Servlet示例中,我们将会探讨如何创建和运行一个基本的Servlet,以及它与JavaScript的交互。 首先,Servlet是一个Java类,它扩展了Java的`javax.servlet.Servlet`或`javax.servlet.http.HttpServlet`...

    servlet实现文件上传下载

    以下是一个基本的文件下载Servlet片段: ```java @WebServlet("/download") public class FileDownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse ...

    用servlet写的文件上传及下载功能带进度条

    com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 com.fm.MyPreogressListener:一个进度监听类,用来做上传进度条的 jquery-1.9.1.js index.jsp:文件列表页面 upload.jsp:文件上传form...

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; 包含翻译后的API文档:javax.servlet-api-4.0.0...

    jsp+servlet实现大型文件下载

    1. 创建Servlet:创建一个Servlet类,重写doGet或doPost方法,处理下载请求。 2. 文件定位:获取请求中包含的文件路径,确保文件安全访问。 3. 打开文件流:使用FileInputStream打开文件,准备读取。 4. 设置响应头...

    答Servlet下载文件的附件

    这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中的service()方法。当一个HTTP请求到达服务器,Servlet容器(如...

    ajax+json+servlet下载

    结合JSON(JavaScript Object Notation)和Servlet,我们可以实现一个高效且用户友好的文件下载系统。以下是对这个"ajax+json+servlet下载"主题的详细解释。 首先,我们需要理解Ajax的核心原理。Ajax通过...

Global site tag (gtag.js) - Google Analytics