- 浏览: 509415 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (150)
- JavaScript (4)
- Jdbc (2)
- Jquery (5)
- Jndi (1)
- HttpClient (3)
- Jsoup (1)
- Linux (9)
- Lucene (5)
- Ubuntu (7)
- Mysql (16)
- Oracle (2)
- Mongodb (12)
- Tomcat (3)
- Hibernate (1)
- Spring (11)
- Struts2 (2)
- 开发工具 (4)
- Servlet (3)
- MVC (1)
- Json (4)
- 敏捷开发 (1)
- maven (6)
- 框架整合 (2)
- Java Core (8)
- Others (6)
- 网络服务 (2)
- Tags (1)
- Tools (12)
- 代码管理 (8)
- Redis (9)
- Log4j (1)
最新评论
-
ipodao:
果然有高人翻译啊,谢了~
dom4j api 详解 -
zhuwensheng:
字符串都不用单引号引着吗?
Oracle+110个常用函数 -
宋建勇:
...
HttpClient 处理中文乱码
Commons FileUpload组件使用方法
1,下载Commons FileUpload组件包,具体可以在http://commons.apache.org网上找,开源的,免费下载.
2,下载Commons IO包,上面的组件必须依赖它才能实现功能.该包也在上面的网页上有提供.
注意:
如果你是使用Tomcat直接开发应用程序,则把上面下载的两个.ZIP文件解压后,将解压后的commons-io-1.4-sources.jar和commons-fileupload-1.2.1.jar两个.jar文件放到tomcat的webapps\你的webapp\WEB-INF\lib\下,目录不存在的话请自己创建.如果你是直接使用MyEclipse进行开发应用,刚把上面的两个.jar文件放到自己创建的用户库里面,在用到这个库时再导入到应用程序中.
步骤:
1.创建一个Servlet----Upload.java文件,用于实现上传文件
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
public class Upload extends HttpServlet {
private String uploadPath = "d:\\upload\\"; // 上传文件的目录
private String tempPath = "d:\\upload\\tmp\\"; // 临时文件目录
在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。以下是示例代码:
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request);//解析用户请求的参数,取出文件上传信息
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(uploadPath + "a.txt"));
}
}
catch(Exception e) {
// 可以跳转出错页面
}
}
编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。
2.配置servlet,用记事本打开tomcat\webapps\你的webapp\WEB-INF\web.xml,没有的话新建一个。
典型配置如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
</web-app>
3.配置好servlet后,启动tomcat,写一个简单的html测试:
<form action="fileupload" method="post"
enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="upload">
</form>
注意action="fileupload"其中fileupload是配置servlet时指定的url-pattern
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("CONTENT_TYPE");
try {
DiskFileUpload diskFileUpload=new DiskFileUpload();
diskFileUpload.setHeaderEncoding("GBK");
List fileItems=diskFileUpload.parseRequest(req);
ErpSTService erpSTService=new ErpSTService();
String strWJLJ="";
String strTmp="";
for(int m=0;m<fileItems.size();m++){
FileItem fileItem=(FileItem) fileItems.get(m);
if(!fileItem.isFormField()){
strWJLJ=fileItem.getName().trim();
long size=fileItem.getSize();
if((strWJLJ == null || strWJLJ.equals("")) && size == 0){
continue;
}else{
String strUploads=getAddress();
if (!new File(strUploads + "erpSt/").isDirectory())
new File(strUploads + "erpSt/").mkdirs();
strTmp = strUploads + "erpSt"
+ "/";
diskFileUpload.setRepositoryPath(strTmp);
strTmp = strTmp +"impexcl.xls";
/////////////////////////////////////////////////////////
System.out.println("准备上传文件:" + strTmp);
//////////////////////////////////////////////////////////
fileItem.write(new File(strTmp));
}
}
}
Workbook book = Workbook.getWorkbook(new File(strTmp));
Sheet sheet = book.getSheet("Sheet1");
// 工作表有数据的行数
int lastCell = 0;
String curCell = "";
// 必填项
String strBug = "";
if (lastCell == 0) {
lastCell = sheet.getRows();
System.out.println(lastCell);
}
// 验证必填项
for(int i=1;i<lastCell;i++)
{
Cell cell = sheet.getCell(0, i);
if(!cell.getContents().trim().equals(""))
{
cell=sheet.getCell(1,i);
if(cell.getContents().trim().equals(""))
{
strBug=strBug+"第"+(i+1)+"行的内容为空,请输入!<br>";
}
// cell=sheet.getCell(7,i);
// if(cell.getContents().trim().equals(""))
// {
// strBug=strBug+"第"+(i+1)+"行的标准答案为空,请输入!<br>";
// }
cell=sheet.getCell(9, i);
if(cell.getContents().trim().equals(""))
{
strBug=strBug+"第"+(i+1)+"行的试题类型为空,请输入!<br>";
}
}
}
if(strBug.trim().equals(""))
{
for(int i=1;i<lastCell;i++)
{
ErpSt erpSt=new ErpSt();
// System.out.println(sheet);
// System.out.println(sheet.getCell(0, i).getContents());
// System.out.println(sheet.getCell(1, i).getContents());
if(!(sheet.getCell(0, i).getContents().trim().equals("")||sheet.getCell(0, i).getContents().trim()==null)){
erpSt.setStbh(Long.parseLong(sheet.getCell(0, i).getContents().trim()));
erpSt.setStnr(sheet.getCell(1, i).getContents().trim());
erpSt.setDaa(sheet.getCell(2, i).getContents().trim());
erpSt.setDab(sheet.getCell(3, i).getContents().trim());
erpSt.setDac(sheet.getCell(4, i).getContents().trim());
erpSt.setDad(sheet.getCell(5, i).getContents().trim());
erpSt.setDae(sheet.getCell(6, i).getContents().trim());
if(sheet.getCell(7, i).getContents().trim().equals("正确")||sheet.getCell(7, i).getContents().trim().equals("对")){
erpSt.setZqda("T");
}else if(sheet.getCell(7, i).getContents().trim().equals("错误")||sheet.getCell(7, i).getContents().trim().equals("错")){
erpSt.setZqda("F");
}else{
erpSt.setZqda(sheet.getCell(7, i).getContents().trim());
}
erpSt.setErpmk(sheet.getCell(8, i).getContents().trim());
if(sheet.getCell(9, i).getContents().trim().equals("单选")){
erpSt.setStlx("1");
}
else if(sheet.getCell(9, i).getContents().trim().equals("多选")){
erpSt.setStlx("2");
}else if(sheet.getCell(9, i).getContents().trim().equals("判断")){
erpSt.setStlx("3");
}else if(sheet.getCell(9, i).getContents().trim().equals("个人实操")){
erpSt.setStlx("4");
}else{
erpSt.setStlx("5");
}
if(!erpSTService.insert(erpSt)){
book.close();
FileReaderWriter.delNrglByPath(strTmp);
req.setAttribute("imperror", "试题从序号为 "+i+" 行开始导入失败,<br>错误原因可能因为序号在数据库中已存在,请修改Excel表中序号,点击确定重新导入!");
req.setAttribute("requestID", "ERP_DW_stdr");
req.getRequestDispatcher("/ewns/erp/impexcel/impSucc.jsp").forward(req, resp);
return;
}
}else break;
}
book.close();
FileReaderWriter.delNrglByPath(strTmp);
req.setAttribute("impok", "恭喜,试题导入成功!,点击确定继续操作。");
req.setAttribute("requestID", "ERP_DW_adminmnList");
req.getRequestDispatcher("/ewns/erp/impexcel/impSucc.jsp").forward(req, resp);
}
else
{
book.close();
FileReaderWriter.delNrglByPath(strTmp);
req.setAttribute("imperror", "试题导入失败,<br>"+strBug+"<br>点击确定重新导入!");
req.setAttribute("requestID", "ERP_DW_stdr");
req.getRequestDispatcher("/ewns/erp/impexcel/impSucc.jsp").forward(req, resp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
本文以Commons FileUpload组件为例说明怎样为JSP应用添加文件上传功能.当然也有其它组件能实现此功能,本文只是为了说明Commons FileUpload组件的用法.
准备工作:
1,下载Commons FileUpload组件包,具体可以在http://commons.apache.org网上找,开源的,免费下载.
2,下载Commons IO包,上面的组件必须依赖它才能实现功能.该包也在上面的网页上有提供.
注意:
如果你是使用Tomcat直接开发应用程序,则把上面下载的两个.ZIP文件解压后,将解压后的commons-io-1.4-sources.jar和commons-fileupload-1.2.1.jar两个.jar文件放到tomcat的webapps\你的webapp\WEB-INF\lib\下,目录不存在的话请自己创建.如果你是直接使用MyEclipse进行开发应用,刚把上面的两个.jar文件放到自己创建的用户库里面,在用到这个库时再导入到应用程序中.
步骤:
1.创建一个Servlet----Upload.java文件,用于实现上传文件
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
public class Upload extends HttpServlet {
private String uploadPath = "d:\\upload\\"; // 上传文件的目录
private String tempPath = "d:\\upload\\tmp\\"; // 临时文件目录
在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。以下是示例代码:
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(4194304);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4096);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request);//解析用户请求的参数,取出文件上传信息
Iterator i = fileItems.iterator();
// 依次处理每一个文件:
while(i.hasNext()) {
FileItem fi = (FileItem)i.next();
// 获得文件名,这个文件名包括路径:
String fileName = fi.getName();
// 在这里可以记录用户和文件信息
// ...
// 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
fi.write(new File(uploadPath + "a.txt"));
}
}
catch(Exception e) {
// 可以跳转出错页面
}
}
编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。
2.配置servlet,用记事本打开tomcat\webapps\你的webapp\WEB-INF\web.xml,没有的话新建一个。
典型配置如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
</web-app>
3.配置好servlet后,启动tomcat,写一个简单的html测试:
<form action="fileupload" method="post"
enctype="multipart/form-data" name="form1">
<input type="file" name="file">
<input type="submit" name="Submit" value="upload">
</form>
注意action="fileupload"其中fileupload是配置servlet时指定的url-pattern
<!--EndFragment-->
- commons-io.jar (87.2 KB)
- 下载次数: 1
- commons-fileupload-1.1.jar (31.1 KB)
- 下载次数: 2
发表评论
-
windows 上使用pscp
2013-07-03 15:08 18181.安装pscp工具 复制 pscp.exe文件放到 C: ... -
数据库设计和实体Bean定义标准
2013-04-26 13:47 1数据表必须包含的字段 字 ... -
文件与字符串之间的转化
2012-09-27 13:16 1164package demo; import java.io.C ... -
SaxReader
2012-09-24 19:04 1038package demo; import java.u ... -
XmlUtil
2012-09-24 19:02 1213package demo; import java.io ... -
dos命令使用手册
2012-11-04 17:45 8731.Windows+R 快速打开dos命令行 2.在cmd ... -
工具大全
2012-09-19 19:39 8521.文本编辑器:notpad++ 2.桌面管理工具:Be ... -
Chrome 强大的插件
2012-09-19 19:39 969JSONView json查看器 Adblock ... -
解决"无法使用Google网上应用商店"的问题
2012-09-04 22:36 4216打开文件夹 C:\WINDOWS\system32\ ... -
windows 上使用wget
2012-06-15 19:30 18742我们都知道wget这个工具是Linux、Unix ... -
dom4j api 详解
2012-06-04 13:16 593651、DOM4J简介 DOM4J是 dom4 ... -
dom4j 的使用
2012-06-04 13:16 2134Dom4j使用简介 Dom4j is an eas ...
相关推荐
本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...
### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...
通过以上步骤,你可以成功地使用Apache Commons FileUpload实现文件上传和下载功能,并避免中文乱码问题。在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。
Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...
### Apache Commons fileUpload 实现文件上传详解 #### 引言 Apache Commons fileUpload 是一个用于处理 HTTP 文件上传的 Java 库。它简化了文件上传的过程,使得开发人员能够轻松地处理来自客户端的文件数据。本...
我自己编写的jsp页面利用fileupload组建实现文件上传和下载,简单易懂。仅供初学者参考...
本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** Apache Commons FileUpload是Apache软件基金会开发的一个开源组件,专门处理HTTP...
**借助Commons FileUpload组件实现文件上传** Apache Commons FileUpload组件简化了文件上传的处理过程。首先,你需要在项目中引入两个JAR包:`commons-fileupload.jar`和`commons-io.jar`。然后,在Servlet中,你...
总的来说,Apache Commons FileUpload是Java Web开发中不可或缺的工具,它简化了文件上传的复杂性,使得开发者能够更专注于业务逻辑,而不用过多关心底层的文件处理细节。正确使用和配置这个库,可以在保证用户体验...
首先,我们要知道ASP.NET中的`<asp:FileUpload>`控件是实现文件上传的核心组件。它可以允许用户从本地计算机选择一个或多个文件,并将这些文件上传到服务器。在多文件上传中,我们需要确保控件的`Multiple`属性设置...
使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
在上述例子中,我们看到了使用Commons FileUpload实现文件上传的步骤: 1. 创建上传页面:HTML表单使用`enctype="multipart/form-data"`属性,指定上传文件的类型。在`<input type="file">`标签中,用户可以选择要...
"FileUpload多文件上传(2.0)"这个主题聚焦于2.0版本的ASP.NET中,如何使用C#来实现用户友好的多文件上传功能。下面将详细阐述这一技术的关键点。 首先,让我们了解`FileUpload`控件。在ASP.NET中,`FileUpload`控件...
Java 实现的文件上传下载功能是Web开发中的一个重要部分,主要涉及到HTTP协议、Servlet、文件I/O以及数据库操作等技术。在这个"FileUpLoad"项目中,开发者使用了Struts2框架来处理用户请求,Oracle数据库存储文件元...
要实现多文件上传,我们需要对FileUpload控件做一些扩展,因为ASP.NET 2.0原生的FileUpload控件仅支持单个文件上传。一种常见的方法是使用HTML5的`<input type="file" multiple />`特性,这允许用户选择多个文件。...