jsp 中文件上传功能

1. 到网上下载两个包

第一个叫做commons-fileupload-1.2.1.jar

第二个叫做commons-io-1.4.jar

首先我们创建一个名为uploadFile.jsp的页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>实现文件上传服务器</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>
  <form action="doFileUpload.jsp" method="post" enctype="multipart/form-data">
     文件:<input type="file" name="chooseFile"/></br>
     姓名:<input type="text" name="userName"/></br>
     <input type="submit" value="提交">
    </form>
  </body>
</html>

 

form表单里的enctype=”multipart/form-data”这一属性一定要写,这是用来标明此表单的类型是文件类型的

 

2.创建另一个jsp页面用来处理文件上传页面(实现功能),名为doFileUpload.jsp。一定要和form表单里action的值相同才行

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.io.File"%>
<% 
//先判断是否是文件上传类型enctype="multipart/form-data"
boolean isFileUpload = ServletFileUpload.isMultipartContent(request);
//如果是文件上传类型
if(isFileUpload){
//得到文件上传工厂
 FileItemFactory factory = new DiskFileItemFactory();
 //处理文件上传核心类
 ServletFileUpload fileUpload = new ServletFileUpload(factory);
 //设置文件上传类的编码格式
 fileUpload.setHeaderEncoding("UTF-8");
 // 集合数据 :  FileItem对象 注意: 每一个表单域 对应一个 FileItem对象(封装)
 List<FileItem> fileItemList = fileUpload.parseRequest(request);
 //遍历fileItemList
 for(FileItem item: fileItemList){
  //如果这个文本域是文件类型的
  if(!item.isFormField()){
  //得到文本域的value值,即 路径+文件名
  String value = item.getName();
  //得到文件名
  String fileName = value.substring(value.lastIndexOf("\\")+1);
  //得到上传的文件类型
//String fileType = fileName.substring(fileName.lastIndexOf("."));
  //给文件重新命名 日期+文件名
  fileName = new Date().getTime() + fileName;
  //得到服务器的根路径
  String rootPath = request.getRealPath("/");
  //指定文件存放路径
  String realPath = rootPath+"/"+"upload";
  //定义文件存放的目录,注意 目录也是文件
  File file = new File(realPath);
  //如果目录不存在
  if(!file.isDirectory()){
   //创建文件上传目录
   file.mkdirs();
  }
  File newFile = new File(realPath+"/"+fileName);
  //向newFile文件中写入数据
  item.write(newFile);
  }else {//如果不是文件上传的文本域,把输入的内容显示在页面上
    out.print("name=" + new String(item.getFieldName().getBytes("ISO-8859-1"),"UTF-8")+",value="+ new String(item.getString().getBytes("ISO-8859-1"),"UTF-8"));
   }
  }  
 }
%>

 

上传的文件的目录在tomocat的安装目录下此项目的根目录下例如D:\software\Tomcat 6.0\webapps\fileUpload,看看文件是不是已经在你创建的文件夹下了!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本代码主要应用的是jsp技术,而实现的文件上传功能,这个功能也是比较常见的,也是比较常用的,更是在网络比较流行的。 技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。 Web应用开发的JavaServer Pages技术方法 在开发JSP规范的过程,太阳微系统公司(Sun Microsystems Inc.)与许许多多主要的Web服务器、应用服务器和开发工具供应商,以及各种各样富有经验的开发团体进行合作。其结果是找到了一种为应用和页面开发人员平衡了可移植性和易用性的开发方法。 JSP技术在多个方面加速了动态Web页面的开发: 将内容的生成和显示进行分离 使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBeans组件,并且捆绑在小脚本,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。 在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。 强调可重用的组件 绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力得到平衡。 采用标识简化页面开发 Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。 通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值