日期:2014-05-17  浏览次数:20717 次

求助,java servlet 上传文件错误。。。。
java中,使用servlet上传文件没有反应,但控制台输出“上传成功”,求大神相助,代码如下。。。不想用控件上传。。。
jsp代码如下:
Java code
<form action="/vats/upfileServlet.do" method="post" encType=multipart/form-data >
         图片:<input type="file" name="img"/>
     <input type="submit" value="提交"/>
     </form>

servlet中:
Java code

public void doPost(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         response.setContentType("text/html");
         request.setCharacterEncoding("UTF-8");
         response.setCharacterEncoding("UTF-8");
         
         DiskFileUpload du = new DiskFileUpload();
         du.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
         du.setSizeThreshold(4096);// 设置缓存区大小 ,4 kb;
         // up 为 /WebRoot 下的 一个目录
         du.setRepositoryPath(request.getSession().getServletContext().getRealPath("/up"));// 设置缓存目录
         // 得到所有文件
         try {
             List list = du.parseRequest(request);
             Iterator it = list.iterator();
             while (it.hasNext()) {
                 FileItem fileItem = (FileItem) it.next();
                     String fileName = fileItem.getName();
                     int index = fileName.lastIndexOf('.');
                     fileName = fileName.substring(index);
                     fileItem.write(new File(request.getSession()
                             .getServletContext().getRealPath("/file")+ "/" + fileName));
                     System.out.println("上传成功");
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
         PrintWriter out = response.getWriter();
         out.flush();
         out.close();
     }




------解决方案--------------------
<form action="/vats/upfileServlet.do" method="post" encType=multipart/form-data >
upfileServlet.do 这个不是struts1吗?不加.do是servlet!

如果struts2和servlet结合的话需要在web.xml中加上说明不然提交strut2的时候他会找servlet,应为strut2可以不加.action,那就和servlet提交方式一样了,这个时候就会报404错误,默认系统应该是先找servlet的!希望你在学SSH的时候如果需求用到servlet对你有帮助,mvc 现在java的好像还是用SSH,当然也要看是什么项目,有的也用mvc或者spring mvc