JSP实现文件上传功能_JSP编程

来源:脚本之家  责任编辑:小易  

本文实例为大家分享了JSP实现文件上传功能的具体代码,供大家参考,具体内容如下

一、准备部分

需要阿帕奇的fileupload.jar与io.jar包共同完成。构建完成路径后可继续。

资源地址

二、页面部分

<form action="UploadServlet" method="post" enctype="multipart/form-data">
 学号:<input type="text" name="sno"/><br/>
 姓名:<input type="text" name="sname"/><br/>
 上传照片:<input type="file" name="spicture"/><br/>
 <input type="submit" value="注册"/>
</form>

注意:

1.文件上传必须要使用post,以避免用get方法时传输总量超过搜索框所能承载最大字符数。

2.必须加入enctype="multipart.form-data"字段

3.文件处需用“file”

三、Servlet部分

package webtest;
 
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
/**
 * Servlet implementation class UploadServlet
 */
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");// 请求编码处理,传输时
  response.setCharacterEncoding("utf-8");// 响应编码处理,传输时
  response.setContentType("utf-8");// 响应编码处理,显示时
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断是否有entype="multipart/form-data"部分
  if (isMultipart) {
   try {
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    
    //设置上传时的内存缓冲区大小,超出时写入临时文件  10kb
    ((DiskFileItemFactory) factory).setSizeThreshold(10240);//单位byte
    //设置临时文件目录,防止系统空间不足
    ((DiskFileItemFactory) factory).setRepository(new File(request.getSession().getServletContext().getRealPath("Uploadtemp")));//动态获取Uploadtemp文件夹位于该项目中的位置
    //控制上传单个文件的最大值 20kb
    upload.setSizeMax(20480);//单位byte
    
    List<FileItem> items = upload.parseRequest(request);// 解析form中的所有请求字段,并保存在item中
    Iterator<FileItem> iter = items.iterator();
 
    while (iter.hasNext()) {
     // 解析时无顺序,因此需根据名字查找
     FileItem item = iter.next();
     if (item.isFormField()) {//非文件数据
      String itemName = item.getFieldName();//获取非文件的范围数据名
      if (itemName.equals("sno")) {
       int sno = -1;
       sno = Integer.parseInt(item.getString("utf-8"));
      }
      else if (itemName.equals("sname")) {
       String sname = null; 
       sname = item.getString("utf-8");
 
      } 
      else {
       System.out.println("其他字段...");
      }
 
     } else {//文件上传
      String fileName = item.getName();//获取文件范围数据。路径及其名称
      //判断文件类型
      String ext = fileName.substring(fileName.indexOf(".")+1);
      if(!(ext.equals("png")||ext.equals("gif")||ext.equals("jpg"))) {
       System.out.println("仅支持png.gif,jpg类型文件");
       return ;
      }
      String path = request.getSession().getServletContext().getRealPath("Upload");//动态获取Upload文件夹位于该项目中的位置
      File file = new File(path,fileName);
      item.write(file);//定义上传路径,多为服务器路径
      System.out.println(fileName+"上传成功");
     }
     item.delete();//删除临时目录的文件
    }
   } 
   catch(FileUploadBase.SizeLimitExceededException e) {
    System.out.println("最大20KB");
   }
   catch (FileUploadException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } 
   catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
 
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  *      response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }
 
}

注:

1.若该处标红且鼠标悬停后未找到包,则可以使用"alt"+"/"组合键选择下图第一个类来导入。

 

2.由于若Upload与Uploadtemp文件存放于tomcat对应的项目下,每一次通过eclipse更新代码,会将eclipse下代码直接覆盖,因而两个文件夹会直接被覆盖掉。可以在eclipse中新建,或通过绝对/相对路径于其他文件夹中来设置。

3.临时文件中的数据会保留很短的时间,添加sleep让程序休眠也许可以看到。即使无item.delete(),在整个会话完成后,临时文件也会被删除。

4.若报错无法找到文件,请尝试用浏览器若谷歌进行操作,而不是用Eclipse自带的。


  • 本文相关:
  • java编程中更新xml文档的常用方法
  • jsp中checkbox用法详解
  • jsp jfreechart使用心得与例子
  • jsp实现弹出登陆框以及阴影效果
  • jsp实现简单用户7天内免登录
  • jsp导出excel文件的方法
  • jsp之c标签用法实例分析
  • jsp中九大内置对象和四种属性范围详解
  • 通过agent判断浏览器版本救命分享
  • jsp中将后台传递过来的json格式的list数据绑定到下拉菜单select
  • jsp 如何实现文件上传和下载功能?
  • 我用jsp实现了一个文件上传功能,主要用于文献的上传,但是上传...
  • jsp实现文件(doc,pdf,jpg,xls,ppt)上传下载功能.
  • JSP如何实现文件上传
  • jsp+servlet实现文件上传问题,已经做到能上传成功了,但是上传...
  • jsp页面中如何视频文件上传的代码实现
  • 哪位高手用JSP写过实现Ext文件上传吗,能给个例子看看吗
  • jsp制作文件上传功能的问题
  • JSP页面如何实现上传文件时候点一下添加就多出一行?
  • jsp文件上传怎么实现批量文件上传,要不依赖于flash插件
  • 怎样通过JSP页面上传个Excel文件,并实现Java读取EXCEL存入...
  • jsp如何实现文件上传与下载?
  • 用JSP实现文件上传,但是有个要求,在上传之前,必须在客户端对...
  • 怎么在 jsp 页面中上传文件
  • JSP实现上传文件,但是为什么文件内容会为空呢?代码如下:求解...
  • KindEditor上传图片问题(自带的jsp文件夹里的已经实现好的de...
  • 求一个不用组件的JSP文件上传代码
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页jsp编程jsp页面实现文件上传下载类代码jsp中点击图片弹出文件上传界面及预览功能的实现jsp实现文件上传下载的程序示例jsp+servlet实现文件上传下载 文件上传(一)ajax和jsp实现的基于web的文件上传的进度控制代码jsp文件上传与下载实例代码jsp中点击图片弹出文件上传界面及实现预览实例详解利用jsp+extjs实现动态显示文件上传进度jsp 文件上传浏览,支持ie6,ie7,ie8servlet+jsp+mysql实现文件上传的方法java编程中更新xml文档的常用方法jsp中checkbox用法详解jsp jfreechart使用心得与例子jsp实现弹出登陆框以及阴影效果jsp实现简单用户7天内免登录jsp导出excel文件的方法jsp之c标签用法实例分析jsp中九大内置对象和四种属性范围详解通过agent判断浏览器版本救命分享jsp中将后台传递过来的json格式的list数据绑定到下拉菜单selectjsp el表达式详细介绍jsp下页面跳转的几种方法小结jsp生成页面验证码的方法[附代码在jsp页面如何获得url参数spring mvc 框架搭建配置方法及详jsp web.xml文件的作用及基本配置jsp自定义标签taglib实现过程重点servlet+jsp实现图片或文件的上传将html页改成jsp的两种方式jsp实现用户登录、注册和退出功能把一张图片变形扭曲成各种不同的长宽jsp中操作数据库的常用sql标签用法总结jsp中实现上传图片即时显示效果功能jsp 注释的详解及简单实例jsp 开发ssh整合异常解决办法jsp response对象实现文件下载的两种方式jsp中include指令和include行为的区别浅谈jsp serverlet的区别与联系jsp request.getparameter() 和request.g
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved