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
你那个打印语句起不到什么判断作用。至少也把 PrintWriter out = response.getWriter();
out.flush();
out.close();
放到trycatch里边吧。