应用common-upload组件上传文件
上一篇 /
下一篇 2009-03-17 13:55:18
/ 个人分类:Jsp之路
该组件使用的情况如下:
1、修改web.xml文件,为servlet增加一个参数作为上传路径
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>uploadFileServlet</servlet-name>
<servlet-class>com.kursk.uploadFileServlet</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>uploads</param-value>
</init-param>
</servlet>
2、uploadFileServlet
private String savePath;//获取上传路径
ServletContext sc;
public void init(ServletConfig config) {
savePath = config.getInitParameter("savePath");;//获取上传路径
sc = config.getServletContext();//获取servlet地址
}
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();
/*
上传后,form表单的所有内容,文件(二进制),文本域(字符串)都被上传到了服务器端的内存,用itr来得到这些对象
*/
while (itr.hasNext()) {//于是开始循环,对文件和文本域分别处理
FileItem item = (FileItem) itr.next();//FileItem是upload组建中的一个对象,用于处理上传的对象
if (item.isFormField()) {//这个方法判断是否是文本域,是,返回true;否则false
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());//item.getName()得到是全路径,用File.getName()来得到单独文件名
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
System.out.println(sc.getRealPath("/") + savePath);
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);
}
收藏
举报
TAG: