JSP 文件上传

  JSP可以通过HTML的form表单上传文件到服务器。 文件类型可以是文本文件、二进制文件、图像文件等其他任何文档。

  创建文件上传表单

  接下来我们使用HTML标签来创建文件上传表单,以下为要注意的点:

  form表单 method 属性必须设置为 POST 方法 ,不能使用 GET 方法。

  form表单 enctype 属性需要设置为 multipart/form-data。

  form表单 action 属性需要设置为提交到后台处理文件上传的jsp文件地址。例如 uploadFile.jsp 程序文件用来处理上传的文件。

  上传文件元素需要使用 标签,属性设置为 type="file"。如果需要上传多个文件,可以在 标签中设置不同的名称。

  以下是一个上传文件的表单,实例如下:

  

  

  

  

  

  

File Upload:

  Select a file to upload:

  

  enctype="multipart/form-data">

  

  

  

  

  

  

  在你本地浏览器访问该文件,显示界面如下所示,在你点击"Upload File"会弹出一个窗口让你选择要上传的文件:

  后台JSP处理脚本

  首先我们先定义文件上传后存储在服务上的位置,你可以将路径写在你的程序当中,或者我们可以在web.xml配置文件中通过设置 context-param 元素来设置文件存储的目录,如下所示:

  

  ....

  

  Location to store uploaded file

  file-upload

  

  c:\apache-tomcat-5.5.29\webapps\data\

  

  

  ....

  

  以下脚本文件UploadFile.jsp可以处理多个上传的文件,在使用该脚本前,我们需要注意以下几点:

  以下实例依赖 FileUpload, 所以你需要在你的classpath中引入最新的 commons-fileupload.x.x.jar 包文件。 下载地址为:http://commons.apache.org/fileupload/。

  FileUpload 依赖 Commons IO, 所以你需要在你的classpath中引入最新的 commons-io-x.x.jar 。 下载地址为: http://commons.apache.org/io/。

  在测试以下实例时,你需要上传确认上传的文件大小小于 maxFileSize 变量设置的大小 ,否则文件无法上传成功。

  确保你已经创建了目录 c:\temp 和 c:\apache-tomcat-5.5.29\webapps\data 。

  <%@ page import="java.io.*,java.util.*, javax.servlet.*" %>

  <%@ page import="javax.servlet.http.*" %>

  <%@ page import="org.apache.commons.fileupload.*" %>

  <%@ page import="org.apache.commons.fileupload.disk.*" %>

  <%@ page import="org.apache.commons.fileupload.servlet.*" %>

  <%@ page import="org.apache.commons.io.output.*" %>

  <%

  File file ;

  int maxFileSize = 5000 * 1024;

  int maxMemSize = 5000 * 1024;

  ServletContext context = pageContext.getServletContext();

  String filePath = context.getInitParameter("file-upload");

  // 验证上传内容了类型

  String contentType = request.getContentType();

  if ((contentType.indexOf("multipart/form-data") >= 0)) {

  DiskFileItemFactory factory = new DiskFileItemFactory();

  // 设置内存中存储文件的最大值

  factory.setSizeThreshold(maxMemSize);

  // 本地存储的数据大于 maxMemSize.

  factory.setRepository(new File("c:\\temp"));

  // 创建一个新的文件上传处理程序

  ServletFileUpload upload = new ServletFileUpload(factory);

  // 设置最大上传的文件大小

  upload.setSizeMax( maxFileSize );

  try{

  // 解析获取的文件

  List fileItems = upload.parseRequest(request);

  // 处理上传的文件

  Iterator i = fileItems.iterator();

  out.println("");

  out.println("");

  out.println("");

  out.println("");

  out.println("");

  while ( i.hasNext () )

  {

  FileItem fi = (FileItem)i.next();

  if ( !fi.isFormField () )

  {

  // 获取上传文件的参数

  String fieldName = fi.getFieldName();

  String fileName = fi.getName();

  boolean isInMemory = fi.isInMemory();

  long sizeInBytes = fi.getSize();

  // 写入文件

  if( fileName.lastIndexOf("\\") >= 0 ){

  file = new File( filePath ,

  fileName.substring( fileName.lastIndexOf("\\"))) ;

  }else{

  file = new File( filePath ,

  fileName.substring(fileName.lastIndexOf("\\")+1)) ;

  }

  fi.write( file ) ;

  out.println("Uploaded Filename: " + filePath +

  fileName + "
");

  }

  }

  out.println("");

  out.println("");

  }catch(Exception ex) {

  System.out.println(ex);

  }

  }else{

  out.println("");

  out.println("");

  out.println("");

  out.println("");

  out.println("");

  out.println("

No file uploaded

");

  out.println("");

  out.println("");

  }

  %>

  接下来让我们通过浏览器访问 http://localhost:8080/UploadFile.htm,界面如下所示,并上传文件:

  如果你的JSP脚本运行正常,文件将被上传至 c:\apache-tomcat-5.5.29\webapps\data\
,你可以打开文件夹看看是否上传成功。(编辑:雷林鹏 来源:网络)

JSP 文件上传的更多相关文章

  1. 不用外部JAR包,自己实现JSP文件上传!

    看书上(JSP应用与开发技术)使用JSP文件上传,写了个真无语,压根就有很多问题,上传500KB的文件传过去后只剩350KB,而且编码必须是GBK.GB2312,否则传过去的文件都数据截取不正确. 琢 ...

  2. jsp文件上传

    整理了一下jsp的上传下载,由客户端到服务端,包括一些常规的业务 一客户端 先看最基本的情况 1 在表单设置multipart/form-data,通过提交键把数据和附件一次性提交的.服务器更多的是对 ...

  3. JSP 文件上传下载系列之二[Commons fileUpload]

    前言 关于JSP 文件上传的基础和原理在系列一中有介绍到. 这里介绍一个很流行的组件commons fileupload,用来加速文件上传的开发. 官方的介绍是:  让添加强壮,高性能的文件到你的se ...

  4. JSP-Runoob:JSP 文件上传

    ylbtech-JSP-Runoob:JSP 文件上传 1.返回顶部 1. JSP 文件上传 JSP 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器.上传的文件可以是文本文件或图 ...

  5. jsp文件上传、下载

    一.文件上传 上传文件是Web开发中经常要用到的功能:例如在基于B/S的人事信息管理系统中上传照片,在新闻发布系统中上传图片等等.....要实现文件上传功能,就需要综合利用java中的文件输入和输出相 ...

  6. JSP文件上传--Smartupload组件

    把smartupload.jar copy到D:\apache-tomcat-7.0.57\lib下. 创建htm上传文件:smartupload_demo01.htm 由于是上传文件,需要对表单进行 ...

  7. jsp 文件上传操作

    文件上传 1:完成一个文件上传的功能 index.jsp 注意更换form表单的enctype enctype就是encodetype就是编码类型的意思. multipart/form-data是指表 ...

  8. JSP文件上传,好烦啊、、

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  9. jsp文件上传下载组件

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

随机推荐

  1. 170508、忘记jenkins密码或者修改jenkins密码

    刚配置好jenkins时,不知道密码是什么,很多同学都有这种烦恼把,各种抓狂. 操作步骤: 1.进入jenkins用户目录  cd /home/rick/.jenkins/users/admin ps ...

  2. Apache配置虚拟主机httpd-vhosts.conf

    一.配置虚拟主机需要3个文件  1.Apache/conf/httpd.conf 2.Apache/conf/extra/httpd-vhosts.conf (这个地版本的apache可能没有,可自己 ...

  3. 写出gradle风格的groovy代码

    写出gradle风格的groovy代码 我们先来看一段gradle中的代码: buildscript { repositories { jcenter() } dependencies { class ...

  4. virtIO之VHOST工作原理简析

    2017-07-19 一.前言 之前有分析过虚拟化环境下virtIO的实现,virtIO相关于传统的虚拟IO在性能方面的确提高了不少,但是按照virtIO虚拟网卡为例,每次虚拟机接收数据包的时候,数据 ...

  5. 商铺项目(使用DES加密配置信息)

    package com.ouyan.o2o.util; import java.security.Key; import java.security.SecureRandom; import java ...

  6. 8.python中双冒号(::)的用法

    s[i:j:k]是,根据该“片第从i到j与第k步”.何时i和j缺席,整个序列是和s[::k]意思是“每k个项目”. 示例 首先,让我们来初始化一个列表: >>> s = range( ...

  7. ISCC2016-BASIC、WEB、MISC简单writeup

    RE和PWN题目的wp有大神已经放出来了,我也不擅长,就不搬了.bin求带. BASIC BASIC-1 50 仿射函数,百度“仿射加密法”,它讲的够清楚了. BASIC-2 50 结尾的“=”这个特 ...

  8. wordpress防止网站被镜像四个方法

    第一种:拆分域名链接与镜像站比对,然后用img标签src空值触发onerror来执行js比对,比对失败则跳转回源站.代码如下:(复制粘贴到主题的functions.php最后一个?>之前,代码出 ...

  9. ng-深度学习-课程笔记-17: 序列模型和注意力机制(Week3)

    1 基础模型(Basic models) 一个机器翻译的例子,比如把法语翻译成英语,如何构建一个神经网络来解决这个问题呢? 首先用RNN构建一个encoder,对法语进行编码,得到一系列特征 然后用R ...

  10. 对java沙箱机制的一点了解

    1.   引入 我们都知道,程序员编写一个Java程序,默认的情况下可以访问该机器的任意资源,比如读取,删除一些文件或者网络操作等.当你把程序部署到正式的服务器上,系统管理员要为服务器的安全承担责任, ...