`

上传下载文件的两个servlet

阅读更多

这是自己之前做文件上传的例子,写给自己看的:

upload:

 

  public void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     response.setCharacterEncoding("UTF-8");
  request.setCharacterEncoding("UTF-8");

  PrintWriter out = response.getWriter();
  
        try {
      String fileValidateClass = request.getParameter("fileValidateClass");
      String fileUploadPath = request.getParameter("fileUploadPath");

      if (fileUploadPath == null || fileUploadPath.equals("")) {
       ConfigurationService c = (ConfigurationService) Context.getBean("configurationService");
       String uploadPath = c.getConfigtationValue("configuration.file.upload.path");
       
       fileUploadPath = FileUtils.getRealPath(request, "/" + uploadPath);
      }

   File fileParent = new File(fileUploadPath);
   if (!fileParent.exists()) {
    fileParent.mkdirs();
   }
   
   DiskFileItemFactory dfif = new DiskFileItemFactory();
   dfif.setSizeThreshold(DEFAULT_SIZE_THRESHOLD);
   dfif.setRepository(new File(fileUploadPath));

   
   ServletFileUpload sfu = new ServletFileUpload(dfif);
   sfu.setSizeMax(DEFAULT_SIZE_MAX);
   List<FileItem> fileItems = sfu.parseRequest(request);
      
   
      if (fileValidateClass != null && !fileValidateClass.equals("")) {
    UploadValidation fileValidate = null;
    try {
     fileValidate = (UploadValidation) Class.forName(
       fileValidateClass).newInstance();
    } catch (ClassNotFoundException e) {
     throw new ClassNotFoundException("Can't find Class:" + fileValidateClass);
    }
    
    String validateinfo = fileValidate.validateFilename(fileItems, fileUploadPath);
    if (validateinfo == null || validateinfo.equals("")) {
     throw new Exception(validateinfo);
    }
   }
           
            String realFile = null;
   String shortName = null;
   String fileNameInSession = "";
   
            for (FileItem fileItem : fileItems) {
    shortName = fileItem.getName().substring(
      fileItem.getName().lastIndexOf("\\") + 1,
      fileItem.getName().length());
    fileNameInSession = request.getSession().getId() + System.currentTimeMillis();
    realFile = fileUploadPath + System.getProperty("file.separator") + fileNameInSession + "_" + shortName;
    fileItem.write(new java.io.File(realFile));
    
    request.getSession().setAttribute("fileNameInSession", fileNameInSession);
            }
           
            out.print("{success:true,realFile:'"+fileNameInSession+"'}");
        } catch (Exception e) {
            logger.error(e);
            out.print("{error:'"+e.getMessage()+"'}");
        }
        out.close();
    }

 

 

download:

 

public void doService(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  
  response.setCharacterEncoding("UTF-8");
  request.setCharacterEncoding("UTF-8");

  OutputStream o = response.getOutputStream();

  String fileName = request.getParameter("fileName");
  String romotefileInfo = request.getParameter("romotefileInfo");

  if (fileName != null) {
   try {
    String uploadPath = request.getParameter("uploadPath");
    String downloadPath = "";
    if (uploadPath == null || uploadPath.trim().equals("")) {
     ConfigurationService c = (ConfigurationService) Context.getBean("configurationService");
     uploadPath = c.getConfigtationValue("configuration.file.upload.path");
     downloadPath = FileUtils.getRealPath(request, "/" + uploadPath);
    } else {
     downloadPath = uploadPath;
    }
    
    //download file from hard driver
    String pathname = downloadPath + fileName;
    File fileLoad = new File(pathname);

    int index = fileName.indexOf("_");
    String name = fileName.substring(index + 1);

    response.setHeader("Content-disposition", "attachment;filename=" + "" + name + "");
    response.setContentType("text/plain");
    
    long fileLength = fileLoad.length();
    String length = String.valueOf(fileLength);
    response.setHeader("Content_Length", length);
    
    // download the file.
    FileInputStream in = new FileInputStream(fileLoad);
    int n = 0;
    byte b[] = new byte[1024];
    while ((n = in.read(b)) != -1) {
     o.write(b, 0, n);
    }
   } catch (Exception e) {
    logger.error(e);
    o.write(new String("errro to download file").getBytes());
   }
   o.close();
  } else if (romotefileInfo != null) {
   try {
    //download file from database
    String filedownRemoteClass = request
      .getParameter("filedownClass");
    DownLoadFromRemote downLoadFromRemote = (DownLoadFromRemote) Class
      .forName(filedownRemoteClass).newInstance();
    byte[] filecontents = downLoadFromRemote
      .getFileFromRemote(romotefileInfo);
    String[] filelist = romotefileInfo.split(";");
    String remotefileName = filelist[2];

    //get the short name
    int index = remotefileName.indexOf("_");
    String name = remotefileName.substring(index + 1);

    BufferedOutputStream stream = null;
    File file = new File(name);
    FileOutputStream fstream = new FileOutputStream(file);
    stream = new BufferedOutputStream(fstream);
    stream.write(filecontents);
    stream.flush();
    
    response.setHeader("Content-disposition", "attachment;filename=" + "" + name + "");
    response.setContentType("text/plain");
    
    // get the file length.
    long fileLength = file.length();
    String length = String.valueOf(fileLength);
    response.setHeader("Content_Length", length);
    
    // download the file.
    FileInputStream in = new FileInputStream(file);
    byte b[] = new byte[1024];
    int n = 0;
    while ((n = in.read(b)) != -1) {
     o.write(b, 0, n);
    }
   } catch (ClassNotFoundException e) {
    logger.error(e);
    o.write(new String("errro to download file: " + e.getMessage()).getBytes());
   } catch (InstantiationException e) {
    logger.error(e);
    o.write(new String("errro to download file: " + e.getMessage()).getBytes());
   } catch (IllegalAccessException e) {
    logger.error(e);
    o.write(new String("errro to download file: " + e.getMessage()).getBytes());
   } catch (Exception e) {
    logger.error(e);
    o.write(new String("errro to download file: " + e.getMessage()).getBytes());
   }
   
   o.close();
  }
 }

分享到:
评论

相关推荐

    servlet+jsp实现上传下载文件用到的两个JAR包

    对于文件下载,你可以创建一个Servlet,读取服务器上的文件,然后设置响应头信息(如 Content-Disposition 和 Content-Type),并将文件内容写入到响应的输出流中,从而实现文件下载功能。 总的来说,Apache ...

    Servlet实现文件上传与下载

    文件上传通常涉及到客户端(用户)和服务器端两个方面。 ##### 1. 前端页面设计 在前端页面设计时,需要注意的是表单提交方式必须设置为`POST`,同时需要指定`enctype`属性为`multipart/form-data`,这样才能正确...

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

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

    JSP/servlet实现上传下载

    本知识点主要探讨如何使用JSP和Servlet来实现文件的上传与下载功能,这是Web应用中常见的需求。 首先,我们要理解JSP和Servlet的角色。JSP主要用于展示视图,而Servlet则处理业务逻辑和控制流程。在上传下载场景中...

    servlet 处理上传文件所需的两个包

    这两个包提供了处理HTTP请求、解析多部分数据(包括文件上传)以及存储上传文件所需的功能。 1. **`javax.servlet` 包**: 这个包是Java Servlet API的一部分,它包含了处理HTTP请求和响应的核心类。在文件上传...

    JSP+Servlet文件上传下载实例

    上传文件" name="submit"&gt; ``` 然后在Servlet中,我们需要解析这个多部分请求。可以使用Apache的Commons FileUpload库来处理。首先,添加依赖到项目,然后在Servlet中编写如下代码: ```java import org....

    Java servlet 和 swf上传超大文件源码

    1. **设置最大上传大小**:在`web.xml`配置文件中,我们需要设置`multipart-config`元素来指定最大上传文件大小,例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;UploadServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;...

    基于Servlet实现文件的上传与下载

    这里我们将深入探讨如何利用Servlet来实现这两个功能。 首先,让我们了解Servlet的工作原理。Servlet是Java类,它扩展了Java Servlet API,通过HttpServlet类来处理HTTP请求。当用户通过浏览器发起请求时,Web...

    文件上传jsp,servlet编写

    5. **安全性**:验证上传文件的类型和大小,防止恶意文件的上传,例如病毒或大文件占用过多服务器资源。 综上所述,这个项目利用JSP创建用户友好的界面,通过Servlet处理文件上传的逻辑,实现了一个完整的文件上传...

    servlet上传

    Commons FileUpload库提供了对上传文件的解析、临时存储和错误处理等功能,使得开发者能够更方便地在Servlet中实现文件上传逻辑。 #### 引入依赖库 为了使用Apache Commons FileUpload,需要在项目中引入两个JAR包...

    servlet+jsp文件上传和下载

    在这个"Servlet+jsp文件上传和下载"的场景中,我们将探讨如何使用这两种技术实现文件的上传与下载功能。 首先,文件上传涉及到HTTP协议中的多部分/形式数据(Multipart/form-data)格式。当用户通过HTML表单提交...

    servlet 文件上传与下载的相关jar包

    总之,这两个库的结合使用极大地简化了Servlet中文件上传和下载的复杂性,让开发者可以更专注于业务逻辑,而不是底层的I/O操作。在实际开发中,务必注意安全性和性能优化,例如限制文件大小、防止路径遍历攻击等。...

    Flex4.6+java+servlet上传图片例子+图片上传预览

    此外,"PicUpload_Java"和"PicUpload_Flex"可能是项目中的两个关键源代码文件或目录。"PicUpload_Java"可能包含Java Servlet的实现,而"PicUpload_Flex"则可能包含了Flex前端的MXML和ActionScript代码。 总的来说,...

    jsp+servlet实现文件上传和下载

    在这个主题中,“jsp+servlet实现文件上传和下载”是核心知识点,我们将深入探讨如何利用这两个组件以及Apache的`commons-fileupload`和`commons-io`库来完成这一任务。 1. **文件上传** 文件上传通常涉及用户通过...

    JSP+Servlet实现mp3的上传下载

    在这个场景下,"JSP+Servlet实现mp3的上传下载"是一个典型的文件操作功能,涉及到用户界面展示、后端处理逻辑以及文件I/O操作。以下将详细解释这个主题中的关键知识点。 首先,JSP是一种服务器端脚本语言,它允许...

    Servlet上传文件并显示进度条

    2. **文件上传过程**:文件上传通常分为两个步骤:解析请求和存储文件。解析请求时,我们需要读取请求体中的每个部分,并将文件保存到服务器的临时目录或指定位置。 3. **进度监听**:在使用FileUpload库时,可以...

    vue+servlet的文件上传案例.rar

    接下来,我们将深入探讨这两个技术如何协同工作,实现文件上传功能。 首先,Vue.js在前端部分扮演了用户界面和数据绑定的角色。Vue组件可以创建一个上传表单,包含一个`&lt;input type="file"&gt;`元素,让用户选择要上传...

    纯jsp,servlet版的多文件上传与下载

    纯jsp,servlet版的文件上传与下载.同时可以上传两个文件,也可以自己修改下代码上传多个文件,这是本人的自己的代码,不是为了赚点积分,还真有点舍不得上传。工程名写成了了nostruts,是为了区分struts,用jsp写的

    java上传与下载——struts2和servlet案例

    这两个技术都是Java Servlet的重要扩展,用于增强Web应用程序的功能和用户体验。 首先,让我们深入理解Struts2框架。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它简化了创建企业...

    jsp+servlet文件上传

    `JSP(JavaServer Pages)`和`Servlet`是Java EE平台上的两种核心技术,它们常用于构建动态Web项目,包括文件上传功能。本篇文章将深入讲解如何使用JSP和Servlet实现文件上传。 首先,我们需要了解`JSP`的基本概念...

Global site tag (gtag.js) - Google Analytics