使用Fileupload组件上传文本和文件
使用fileupload组件上传文本和文件
绪论
使用fileupload组件可以很方便的向服务器上传数据,包括表单数据以及二进制文件,比如pdf、图片视频等等。下面演示如何上传form表单数据以及二进制数据(以上传图片和word文件为例)
1、效果演示
因为本实验当中,做了一个小小的验证(如果前台页面没有选择文件就点击上传,是会提示错误信息到前台的),所以要用到JSP的标签,需要添加jstl.jar和standard.jar这两个包到buildPath当中。
第一个userName就是上传的表单数据(这里就只有一个数据,实际中可以添加多个数据,在servlet中通过前台的ID获取即可)
第二个就是上传文件,如果文件选择为空,即未选择文件就点击上传,则不提交,显示如下
正确选择文件以后(以桌面上的一个名为“框图”的word文件为例)
点击上传以后,在文件夹下查看:
然后表单数据的值233,我就直接打印在控制台了。
2、代码
2.1 tomcat中web.xml的配置文件如下:
<servlet><servlet-name>upload</servlet-name><servlet-class>cn.zhoucy.web.Upload</servlet-class></servlet><servlet-mapping><servlet-name>upload</servlet-name> <url-pattern>/upload</url-pattern></servlet-mapping>
即是添加一个servlet即可。
2.2 前台jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><script type="text/javascript">function checkForm(){var fileName=document.getElementById("file").value;if(fileName==null||fileName==""){document.getElementById("error").innerHTML="文件不能为空!";return false;}return true;}
</script><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body > <form action="upload" method="POST" enctype="MULTIPART/FORM-DATA" onsubmit="return checkForm()"> userName:<input type="text" id="userName" name="userName" size="30"/> <br/><br/>File:<input type="file" id="file" name="file" size="30"/> <br/><br/><button class="btn btn-primary" type="submit" >上传</button> <button class="btn btn-primary" type="reset" >重置</button> <font id="error" color="red">${error }</font></form> </body>
</html>
其中使用到了jstl.jar和standard.jar这两个包。
2.3 后台servlet程序
package cn.zhoucy.web;import java.io.File;
import java.io.IOException;
import java.util.Iterator;
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.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class Upload extends HttpServlet{private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {userSave(request,response);}private void userSave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {FileItemFactory factory=new DiskFileItemFactory();ServletFileUpload upload=new ServletFileUpload(factory);upload.setHeaderEncoding("UTF-8");List<FileItem> items=null;try {items=upload.parseRequest(request); //获得前台提交过来的信息,两类:文件、form表单} catch (FileUploadException e) {e.printStackTrace();}Iterator<FileItem> itr=items.iterator(); while(itr.hasNext()){FileItem item=(FileItem)itr.next();if(item.isFormField()){//是表单数据System.out.println(item.getString("utf-8"));}else if(!"".equals(item.getName())){//不是form表单数据而是文件上传try{//上传到硬盘的一个绝对路径String filePath="E:\\Files\\"+item.getName();item.write(new File(filePath));}catch(Exception e){e.printStackTrace();}}} }
}
2.4 整体工程结构及使用到的包下载
2.4.1 整体project结构
2.4.2 使用到的包
本实验一共使用如上图/lib目录下的4个包(附下载地址):
jstl.jar
http://download.csdn.net/detail/theblackbeard/9743427
standard.jar
http://download.csdn.net/detail/theblackbeard/9743857
commons-fileupload-1.2.1.jar http://download.csdn.net/detail/theblackbeard/9743428
commons-io-1.3.2.jar
http://download.csdn.net/detail/theblackbeard/9743861
使用Fileupload组件上传文本和文件相关推荐
- 解决稻香老农无组件上传类在文件上传时当文件名中含中文单双引号取不到正确的文件名的方案
今天完成了对稻香老农的最新版本无组件上传类V2.1的修改. 解决了文件上传时当文件名中含中文单双引号取不到正确的文件名的问题. 参考了无惧上传类,在此感谢稻香老农和梁无惧两位老师,谢谢他们无偿的奉献了 ...
- 清空文件上传文本框文件
本文档记载2个功能:1在本按钮<input type="file">清除file文本框文件 2在其他按钮清除file文本框文件 html: <!DOCTYPE h ...
- 使用SmartUpload组件上传文件
刚刚上手的项目 被文件上传困扰了好久,之前用fileupload组件上传,代码参考孤傲苍狼博客,可是除了文件名,表单内的其他内容不知道该怎么读出来进行存储:所以此次采用smartupload组件进行上 ...
- leaflet使用L.KML.js插件上传本地kml文件到leaflet中
发现网上的案例都是加载项目assets内的kml文件,而实际的需求是:用户需要上传自己计算机上的kml文件,找了半天没找到案例,最后终于研究出来了,喜欢的点赞支持! 1.网上案例使用 L.KML.js ...
- .net fileupload批量上传可删除_【JavaWeb基础】文件上传和下载(修订版)
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 什么是文件上传? 文件上传就是把用户的信息保存起来. ...
- javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件
大家好,欢迎来到雄雄的小课堂,今天给大家分享的是<javaWeb中,如何通过Commons-FileUpload组件上传文件> 前言:文件上传大家都不陌生,在这个互联网飞速发展的时代,共享 ...
- asp实现无组件上传文件原理
一.上传网页 上传页面代码: <form action="upload.asp" method="post" enctype=&quo ...
- 使用commons-fileupload组件上传文件(随笔)
1.第三方控件又被称为是第三方组件,使用第三方组件,可以避免大量编码,减少开发工作量及由于逻辑或算法造成的程序异常,从而降低开发成本,提高开发效率.由于第三方组件是第三方组织或者个人提供的,在开发时提 ...
- 在本地测试无组件上传类上传大文件可以,在服务器上就不行,仿163网盘无刷新文件上传系统...
回复 引用 查看 2008-10-20 11:03 | fkeuem 真的很不错.谢谢. 回复 引用 查看 2008-10-20 11:20 | PuserChen 下载了,学 ...
最新文章
- WebAssembly 浏览器中运行c/c++模块
- Use Excel Pivot Table as a BI tool
- html怎么给框格加背景图,怎么给word 2013表格添加漂亮的背景图片
- 练习-多表图书管理系统
- win10原版操作系统安装过程【超详细】
- 使用ssh远程连接家庭电脑
- echarts 柱状图+折线图
- wpsmac历史版本_WPS Office 2019 1.2.0(1574) Mac中文正式版
- 上海计算机科学大学排名,2019上海软科世界一流学科排名计算机科学与工程专业排名卡耐基梅隆大学排名第4...
- 专业3C认证CCC认证机构
- 基于simulink的微电网虚拟同步发电机vsg控制系统仿真
- 自制STC12C5A60S2最小系统板
- 聊一聊以前公司的测试流程
- 年度成绩大赏|2021,StreamNative 扬帆起航
- 软件测试--------数据库MySQL 常用sql语句
- python中有没有switch_为什么python没有switch/case
- 微信订阅号推广只要这一个标题就够了!
- 筑基九层 —— 指针详解
- React中文文档 8. 列表 Key
- 卸载linux 安装win10,如何卸载(或重新安装)Windows 10的Ubuntu Bash Shell | MOS86