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