commons-fileupload 实现文件上传

第一步:

创建页面文件

<%@pagelanguage="java"pageEncoding="gbk"%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<%@includefile="/header.jsp"%>

<title>文件上传</title>

</head>

<body>

<h2>使用commons-fileupload上传文件</h2>

<hr/>

<formaction="<%=basePath%>fileupload.do"method="post"

enctype="multipart/form-data">

<table>

<tr>

<td>请选择要上传的文件</td>

<td>

<inputtype="file"name="filepath"size="20"/>

</td>

</tr>

<tr>

<td>

<inputtype="submit"value="上传"/>

</td>

</tr>

</table>

</form>

</body>

</html>

第二步:Web.xml

上面action中的fileupload.do是一个servlet,不是Struts的action,在web.xml中添加servlet配置如下:

<servlet>

<servlet-name>FileUploadServlet</servlet-name>

<servlet-class>

com.xinglongjian.struts.fileupload.FileUploadServlet

</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>FileUploadServlet</servlet-name>

<url-pattern>/fileupload.do</url-pattern>

</servlet-mapping>

第三步:编写上传类FileUploadServlet.java

此类是一个servlet,继承自HttpServlet

packagecom.xinglongjian.struts.fileupload;

importjava.io.File;

importjava.io.IOException;

importjava.util.List;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.commons.fileupload.FileItem;

importorg.apache.commons.fileupload.FileUploadException;

importorg.apache.commons.fileupload.disk.DiskFileItemFactory;

importorg.apache.commons.fileupload.servlet.ServletFileUpload;

publicclassFileUploadServletextendsHttpServlet

{

privatestaticfinallongserialVersionUID=1L;

@Override

protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException

{

request.setCharacterEncoding("gbk");//防止中文乱码

String realPath=this.getServletContext().getRealPath("/fileload");//需要存放的真实路径

booleanisMultipart=ServletFileUpload.isMultipartContent(request);

if(!isMultipart)

return;

DiskFileItemFactory factory=newDiskFileItemFactory();

ServletFileUpload upload=newServletFileUpload(factory);

upload.setFileSizeMax(1024*1024);   //设置最大的上传数据的大小

List<FileItem> items=null;

try

{

items=upload.parseRequest(request);

}

catch(FileUploadException e)

{

e.printStackTrace();

}

for(FileItem item:items)

{

if(!item.isFormField())     //判断是普通表单还是文件提交表单

{

File fullFile=newFile(item.getName());

File uploadFile=newFile(realPath,fullFile.getName());

try

{

item.write(uploadFile);

}

catch(Exception e)

{

e.printStackTrace();

}

}

}

request.getRequestDispatcher("/struts/success.jsp").forward(request, response);

}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值