jsp+servlet实现文件上传与下载功能

所属分类: 网络编程 / JSP编程 阅读数: 1121
收藏 0 赞 0 分享

本文实例为大家分享了jsp servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下

上传:

需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * 上传附件
 * @author new
 *
 */
public class UploadAnnexServlet extends HttpServlet {

 private static String path = "";

 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

 doPost(request, response);
 }

 /*
 * post处理
 * (non-Javadoc)
 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */
 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

 path = this.getServletContext().getRealPath("/upload");

 try {
 DiskFileItemFactory factory = new DiskFileItemFactory();
 ServletFileUpload up = new ServletFileUpload(factory);
 List<FileItem> ls = up.parseRequest(request);

 for (FileItem fileItem : ls) {
 if (fileItem.isFormField()) {
  String FieldName = fileItem.getFieldName();
  //getName()返回的是文件名字 普通域没有文件 返回NULL
  //     String Name = fileItem.getName();
  String Content = fileItem.getString("gbk");
  request.setAttribute(FieldName, Content);
 } else {
 
  String nm = fileItem.getName().substring(
  fileItem.getName().lastIndexOf("\\") + 1);
  File mkr = new File(path, nm);
  if (mkr.createNewFile()) {
  fileItem.write(mkr);//非常方便的方法
  }
  request.setAttribute("result", "上传文件成功!");
 }
 }
 } catch (Exception e) {
 e.printStackTrace();
 request.setAttribute("result", "上传失败,请查找原因,重新再试!");
 }
 request.getRequestDispatcher("/pages/admin/annex-manager.jsp").forward(
 request, response);
 }

}

下载(i/o流)无需导包:

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 下载文件
 * @author
 *
 */
public class DownloadFilesServlet extends HttpServlet {

 /**
 * 
 */
 private static final long serialVersionUID = 8594448765428224944L;

 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

 doPost(request, response);
 }

 /*
 * 处理请求
 * (non-Javadoc)
 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */
 public void doPost(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

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

 System.out.print("dddddddddd:" + name);
 // web绝对路径
 String path = request.getSession().getServletContext().getRealPath("/");
 String savePath = path + "upload";

 // 设置为下载application/x-download
 response.setContentType("application/x-download");
 // 即将下载的文件在服务器上的绝对路径
 String filenamedownload = savePath + "/" + name;
 // 下载文件时显示的文件保存名称
 String filenamedisplay = name;
 // 中文编码转换
 filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8");
 response.addHeader("Content-Disposition", "attachment;filename="
 + filenamedisplay);
 try {
 java.io.OutputStream os = response.getOutputStream();
 java.io.FileInputStream fis = new java.io.FileInputStream(
  filenamedownload);
 byte[] b = new byte[1024];
 int i = 0;
 while ((i = fis.read(b)) > 0) {
 os.write(b, 0, i);
 }
 fis.close();
 os.flush();
 os.close();
 } catch (Exception e) {

 }

 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Java Web实现的基本MVC实例分析

这篇文章主要介绍了Java Web实现的基本MVC,以完整实例形式较为详细的分析了JSP实现MVC架构的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp中调用java代码小结

大多数情况下, jsp 文档的大部分由静态文本(html)构成, 为处理该页面而创建的 servlet 只是将它们原封不动的传递给客户端
收藏 0 赞 0 分享

jsp和servlet操作mysql中文乱码问题的解决办法

自己做测试的时候用到jsp/servlet 向mysql中写数据,但是中文总是乱码,今早纠结了半天才搞定,分享给大家我的解决办法
收藏 0 赞 0 分享

jsp跳转getRequestDispatcher()和sendRedirect()的区别

这篇文章主要介绍了jsp跳转getRequestDispatcher()和sendRedirect()的区别,需要的朋友可以参考下
收藏 0 赞 0 分享

java操作mysql入门代码实例(含插入、更新和查询)

这篇文章主要介绍了java操作mysql代码实例,通过执行SQL语句实现,需要的朋友可以参考下
收藏 0 赞 0 分享

struts2中一个表单中提交多个请求的例子(多个提交按钮)

在很多Web应用中,为了完成不同的工作,一个HTML form标签中可能有两个或多个submit按钮,Struts2中提供了另外一种方法,使得无需要配置可以在同一个action类中执行不同的方法(默认执行的是execute方法)
收藏 0 赞 0 分享

jsp中使用javabean实例介绍

这篇文章主要介绍了jsp中使用javabean的实例,同时介绍了相关属性,需要的朋友可以参考下
收藏 0 赞 0 分享

servlet中session简介和使用例子

在servlet中,session是封装在javax.servlet.http.HttpSession这个接口中的,这个接口是构建在cookie或者URL重写的基础上,要得到一个HttpSession的实例,就可以通过HttpServletRequest的getSession()
收藏 0 赞 0 分享

JSP中用回车监听按钮事件兼容火狐 IE等主流浏览器

这篇文章主要介绍了用回车监听按钮事件并且兼容火狐、IE等主流浏览器 ,需要的朋友可以参考下
收藏 0 赞 0 分享

JAVA velocity模板引擎使用实例

这篇文章主要介绍了JAVA velocity模板引擎使用实例,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多