今天搞了一下文件上传功能组件Common FileUpload。
需要两个Jar包分别是commons-io-1.4.jar,commons-fileupload-1.2.1.jar。点击下载
只需要写一个上传类UploadServlet.java,还需要两个Jsp界面,分别负责上传文件和输出上传是否成功。
还需要在根目录下新建一个文件夹uploads,用于保存上传后文件。
下面是上传Servlet类源码:
<!---->
package com.sy.web;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = -2201219701121037194L;
private String savePath;
private ServletContext sc;
public void init(ServletConfig config) {
savePath = config.getInitParameter("savePath");
sc = config.getServletContext();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);// 上传文件解析
Iterator itr = items.iterator();// 枚举方法
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (item.isFormField()) {// 判断是文件还是文本信息
System.out.println("表单参数名:" + item.getFieldName()
+ ",表单参数值:" + item.getString("UTF-8"));
} else {
if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
System.out.println("上传文件的名称:" + item.getName());
// 此时文件暂存在服务器的内存当中
File tempFile = new File(item.getName());// 构造临时对象
File file = new File(sc.getRealPath("/") + savePath,
tempFile.getName());
// 获取根目录对应的真实物理路径
item.write(file);// 保存文件在服务器的物理磁盘中
request.setAttribute("upload.message", "上传文件成功!");// 返回上传结果
} else {
request.setAttribute("upload.message", "没有选择上传文件!");
}
}
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("upload.message", "上传文件失败!");
}
request.getRequestDispatcher("/uploadResult.jsp").forward(request,
response);
}
}
好了可以上传了。
施杨出品!!!
分享到:
相关推荐
首先,我们来看一下标题:“利用Common-fileupload封装的文件上传组件...附上源码”。这表明我们将讨论如何使用这个库来创建一个文件上传系统,并且提供有源码可供参考。通过`Common-fileupload`,我们可以实现用户...
通过以上步骤,我们就使用Apache Commons FileUpload组件实现了一个基本的文件上传功能。你可以根据自己的需求对这个示例进行扩展,比如添加错误处理、文件类型检查和存储优化等。参考提供的博文链接,可以获取更多...
- 创建`lib`目录,并下载Apache Commons FileUpload组件(版本1.0),解压后将`commons-fileupload-1.0.jar`放入`lib`目录。 - 创建`src`目录用于存放Java源代码,并编写`compile.bat`批处理文件以便于编译Java...
标题中的"commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar"提到了Apache Commons FileUpload的1.3.3版本的库及其源码。Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分...
10. **与其他Apache Commons库的集成**:Apache Commons FileUpload经常与另一个Apache Commons组件——Commons IO一起使用,共同处理文件I/O操作,例如读取和写入文件。 通过分析"commons-fileupload-1.3.2-src...
`common_fileupload详解.doc`文档应该提供了关于库的详细使用指南、API参考和示例代码。通过阅读文档,你可以快速掌握如何在项目中集成和使用`commons-fileupload`。 总的来说,Apache Commons FileUpload库极大地...
在这个主题中,我们将深入探讨其中的两个关键组件:`Commons-IO` 和 `Commons-Fileupload`,以及它们的源码分析。 **Apache Commons IO** `Commons-IO` 是一组与I/O相关的实用工具类,它弥补了Java标准库中对输入/...
Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。. EL Commons-EL 提供在JSP2.0规范中定义的EL表达式的解释器. FileUpload FileUpload 使得在你可以在应用和...
commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%> <!DOCTYPE ...
|--taotao-common --- 通用组件、工具类 |--taotao-manage -- 后台系统 |--com.taotao.manage.web |--com.taotao.manage.service |--com.taotao.manage.mapper |--com.taotao.manage.pojo 3.4. 创建...
描述中的"包括源码和API"意味着这些JAR包不仅包含了编译后的类库,还提供了源代码供开发者学习和调试,以及API文档帮助理解每个组件的使用方法和功能。 以下是压缩包子文件所对应的Apache Commons组件及其主要功能...
在ASP环境中,文件上传通常需要借助于服务器端的组件,例如Common Files的FileUpload控件,但这类组件可能需要特定的服务器配置或购买。爱雪儿无组件上传类的出现,解决了这一问题,它使得开发者在没有额外组件的...