首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

【Servlet】文件下传

2012-08-21 
【Servlet】文件上传用到的lib有:commons-io-2.0.1.jarcommons-fileupload-1.2.2.jar可以在Apache官网上下载

【Servlet】文件上传

用到的lib有:

commons-io-2.0.1.jarcommons-fileupload-1.2.2.jar

可以在Apache官网上下载,也可以在Struts2中找到,

首先是上传文件的页面:

请选择要上传的文件:<form action="UploadServlet" method="post" enctype="multipart/form-data">上传人:<input type="text" name="username"><br><input type="file" name="file"><br><input type="submit" value="上传"></form>


 

其中,enctype="multipart/form-data"必须有,否则会报错,

下面是UploadServlet:

public class UploadServlet extends HttpServlet {private ServletContext sc;private String savepath;public UploadServlet() {        super();    }public void init(ServletConfig config) throws ServletException {savepath=config.getInitParameter("savepath");sc=config.getServletContext();super.init();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");DiskFileItemFactory factory=new DiskFileItemFactory();ServletFileUpload upload=new ServletFileUpload(factory);try {//解析request参数List<FileItem> items=(<FileItem>)upload.parseRequest(request);for(FileItem item : items)//判断是否为文本参数if(item.isFormField()){System.out.println("参数名:"+item.getFieldName()+",参数值:"+item.getString("UTF-8"));//对应的值加上编码,否则有可能乱码,}else{//为文件,//判断是否为空,if(item.getName()!=null&& !item.getName().equals("")){System.out.println("文件名:"+item.getName());System.out.println("文件类型:"+item.getContentType());System.out.println("文件大小:"+item.getSize());//通过item.getName()获得的文件名是带了客户端的路径的,所以这里截取出文件名,String value=item.getName();int start=value.lastIndexOf("\\");String fileName=value.substring(start+1);File file=new File(sc.getRealPath("/")+savepath,fileName);//保存文件item.write(file);request.getSession().setAttribute("uploadmessage", "文件上传成功!");System.out.println("文件上传成功!");}else {request.getSession().setAttribute("uploadmessage", "没有选择上传文件!");}}}}catch (Exception e) {e.printStackTrace();request.getSession().setAttribute("uploadmessage", "文件上传失败!");}response.sendRedirect("result.jsp");}}

在web.xml中UploadServlet配置中加上初始化参数savepath:

  <servlet>    <servlet-name>UploadServlet</servlet-name>    <servlet-class>org.yhn.test.servlet.UploadServlet</servlet-class>    <init-param>    <param-name>savepath</param-name>    <param-value>upload</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>UploadServlet</servlet-name>    <url-pattern>/UploadServlet</url-pattern>  </servlet-mapping>

结果页面输出下session即可,
最后别忘了在项目中新建一个文件夹,upload,
效果如下:

【Servlet】文件下传

【Servlet】文件下传

【Servlet】文件下传

热点排行