下面是用fileupload上传文件的简单工具类:
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public class UpLoadUtil2 {
public static String upload(HttpServletRequest request){
String msg = null;
try{
boolean isMultipart = FileUploadBase.isMultipartContent(request);
if(isMultipart){//判断Form是否为 multipart form
FileItemFactory fileItemFactory = new DiskFileItemFactory();//设置工厂
FileUpload fileUpload = new FileUpload(fileItemFactory);//上传组件
//这里就是中文文件名处理的代码,其实只有一行,setHeaderEncoding就可以了
fileUpload.setHeaderEncoding("utf-8");
List fileItemList = fileUpload.parseRequest(request);//解析上传文件数据包
for(int i=0;i<fileItemList.size();i++){
FileItem fileItem = (FileItem)fileItemList.get(i);//遍历每个上传文件
if(!fileItem.isFormField()){//判断是不是上传的文件
String fullFileName = fileItem.getName();//文件全名
String fileName = getFileName(fullFileName);//文件名
//设置文件存储在服务器上的路径
String path = request.getRealPath("/upload");
if(!new File(path).isDirectory())//如果不存在,则创建目录
new File(path).mkdirs();
File file = new File(path, fileName);
fileItem.write(file);
msg = file.getAbsolutePath();
}
}
}
}catch(Exception e){
e.printStackTrace();
}
return msg;
}
public static String getFileName(String fullFileName){
String fileName = fullFileName.substring(fullFileName.lastIndexOf("\\")+1);
return fileName;
}
}
如上upload方法中传入request对象参数,fileupload组件通过解析request得到上传文件。
下面是页面的部分代码,用来发送上传文件请求:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'uploadExcel.jsp' starting page</title>
<script type="text/javascript">
function tosubmit(){
var filename = document.getElementById('fileid').value;
if(filename =='' || filename == null){
alert("请先选择要上传的文件");
}else{
window.document.form1.submit();
}
}
</script>
</head>
<body>
<form method="post" name="form1"
action="<%=request.getContextPath()%>/uploadExcelServlet"
enctype="multipart/form-data" >
<table class="formLayout">
<tr>
<td align="right">
选择要上传的文件:
</td>
<td align="left">
<input type="file" id="fileid" name="filename"/>
</td>
</tr>
<tr>
<td align="right">
</td>
<td align="left">
<input type="button" value="确定上传" class="btn_width"
onclick="tosubmit()">
<input type="button" value="返回" onclick="window.history.back()"
class="btn_width">
</td>
</tr>
</table>
</form>
</body>
</html>
分享到:
相关推荐
5. **并发处理**:如果同时有多个用户上传文件,需要考虑并发控制。 在实际开发中,你还可以结合AJAX和jQuery来实现异步上传,提高用户体验。同时,了解并应用相关的WebAPI或SignalR技术,可以使你的文件上传功能...
本示例中的"fileUpload文件上传组件例子"提供了一个自定义实现的文件上传组件,旨在帮助开发者理解并掌握这一关键功能的实现方式。 首先,我们需要了解文件上传的基本原理。在HTML中,`<input type="file">`标签...
【使用commons-fileupload上传文件】 Apache Commons FileUpload是Apache组织的一个子项目,专注于处理HTTP文件上传。这个组件提供了一个简洁的API,使得开发者能够轻松地在Java应用中处理由浏览器发送的多部分...
该库提供了解析请求、存储上传文件和处理异常的能力。 **二、基本原理** 文件上传涉及到客户端和服务器之间的交互。用户通过HTML表单选择文件后,浏览器将文件封装成多部分数据,发送到服务器。FileUpload库负责...
在Web开发中,允许用户上传文件是常见的需求,例如提交简历、上传图片或者分享文档。HTTP协议本身并不支持文件上传,但是通过MIME多部分/相关格式,我们可以将文件内容作为POST请求的一部分发送。Apache Commons ...
这个库为Java开发者提供了一个简单而强大的API,能够方便地实现文件上传功能。 `commons-fileupload`是Apache Commons项目的一部分,它的主要功能包括: 1. **解析多部分HTTP请求**:在HTTP协议中,文件上传通常...
`FileUpload`通常指的是一个用于处理用户通过Web表单上传文件的组件或技术。本篇将详细讲解这一主题,包括文件上传的基本原理、使用FileUpload进行文件上传的步骤以及相关注意事项。 一、文件上传的基本原理 文件...
- 上传文件时,应检查文件类型和大小,防止恶意文件上传。 - 文件名处理时,避免使用用户提供的原始文件名,以防路径遍历攻击。可以生成随机文件名或重命名文件。 - 使用临时目录存储上传的文件,直到准备好处理...
Apache Commons FileUpload是Apache软件基金会的一个子项目,它提供了处理HTTP请求中multipart/form-data类型的工具,这是HTML表单上传文件的标准格式。通过这个库,开发者可以轻松地解析请求,获取上传文件的信息...
本篇文章将详细讲解如何使用`Commons-FileUpload`进行文件上传,并读取上传文件的内容。 首先,了解`Commons-FileUpload`的工作原理。它解析HTTP请求,将多部分的数据分割成单独的部分,这些部分可以是文本或文件。...
1. 创建一个`DiskFileItemFactory`对象,它定义了临时存储上传文件的策略。 2. 使用`DiskFileItemFactory`创建一个`ServletFileUpload`实例,设置最大上传大小等配置。 3. 使用`ServletFileUpload.parseRequest...
FileUpload 文件上传组件的ASP.NET实例,基于主副窗口的上传程序,利用线程提升上传... ASP.NET FileUpload上传图片并解决上传限制 解决FileUpload控件上传文件大小限制 ASP.NET中实现FileUpload多文件上传
.NET 文件上传文件控件(FileUpload)使用实例 .NET Framework 提供了一个名为 FileUpload 的控件,用于实现文件上传功能。本文将通过一个简单的图片上传程序,来演示 FileUpload 控件的使用实例。 在 ASP.NET 中...
在Java Web开发中,文件上传是一项常见的功能,`commons-fileupload`库是Apache Commons项目提供的一款强大且...通过学习和理解这个简单的例子,你可以进一步扩展和定制自己的文件上传功能,满足各种实际项目的需求。
这个"commons-fileupload上传和下载例子.zip"压缩包包含了使用Apache Commons FileUpload进行文件上传和下载的示例代码,可以帮助我们深入理解这一功能的实现。 Apache Commons FileUpload是Apache软件基金会的一个...
// 设置最大上传文件大小,-1表示无限制 ``` 4. **解析请求**:使用`FileUpload`对象的`parseRequest()`方法解析请求,这将返回一个`FileItemIterator`,我们可以遍历这个迭代器获取每个上传的文件项。 ```java ...
Apache Commons FileUpload 是一个用于处理 HTTP 请求中多部分(multipart)数据的 Java 库,尤其适合上传文件。在本文中,我们将深入探讨如何利用该库实现多个文件的上传功能。 一、准备工作 在使用 Apache ...
总结来说,`fileupload上传文件工具开发jar包`是一个集成了Apache Commons `io`和`fileupload`的便捷工具,主要用于Java环境中处理HTTP文件上传。它提供了文件上传的解析、存储和处理能力,为开发者构建安全、高效的...
1. 安全性:确保验证上传文件的类型和大小,防止恶意文件上传。 2. 异常处理:捕获并处理解析、写入文件时可能出现的异常。 3. 性能优化:合理设置内存阈值,避免大文件一次性加载到内存。 4. 文件命名:避免使用...
- `DiskFileItemFactory`:负责临时存储上传文件,设置临时目录和大小限制。 - `ServletFileUpload`:解析Servlet请求,使用`DiskFileItemFactory`创建`FileItem`对象。 2. **JSP文件上传步骤**: - 创建表单:...