java中,使用servlet上传文件没有反应,但控制台输出“上传成功”,求大神相助,代码如下不想用控件上传
jsp代码如下:
<form action="/vats/upfileServlet.do" method="post" encType=multipart/form-data >
图片:<input type="file" name="img"/>
<input type="submit" value="提交"/>
</form>
servlet中: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();
}
jsp代码如下:
<form action="/vats/upfileServlet.do" method="post" encType=multipart/form-data >
图片:<input type="file" name="img"/>
<input type="submit" value="提交"/>
</form>
servlet中: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();
}
解决方案 »
- 数据库里模糊查询怎么写啊?
- 关于session过期的问题(java)
- dwr 如何用一个java.util.List 填充select表单?
- 急求IBM以前的笔试题和大的考试方向,具体请进,50分,不够可以再给
- 我如何生成一个javaBean的实例???
- 一个有关数据库连接池的问题!求救!
- struts2 的下载文件 下载文件的名称
- Servlet参数传递问题
- 为什么我的Hibernate的buildServiceRegistry()会出错!
- 菜鸟求助Service层Dao层的说法是基于MVC模式的吗
- 条件查询
- Google APi可以获取一个地址的所在商圈吗 ,或者百度Map api的java,php调用方法
upfileServlet.do 这个不是struts1吗?不加.do是servlet!如果struts2和servlet结合的话需要在web.xml中加上说明不然提交strut2的时候他会找servlet,应为strut2可以不加.action,那就和servlet提交方式一样了,这个时候就会报404错误,默认系统应该是先找servlet的!希望你在学SSH的时候如果需求用到servlet对你有帮助,mvc 现在java的好像还是用SSH,当然也要看是什么项目,有的也用mvc或者spring mvc
upfileServlet.do 这个不是struts1吗?不加.do是servlet!如果struts2和servlet结合的话需要在web.xml中加上说明不然提交strut2的时候他会找servlet,应为strut2可以不加.action,那就和servlet提交方式一样了,这个时候就会报404错误,默认系统应该是先找servlet的!希望你在学SSH的时候如果需求用到servlet对你有帮助,mvc 现在java的好像还是用SSH,当然也要看是什么项目,有的也用mvc或者spring mvc
你while里只要执行就一定会输出这句话,我怎么感觉你这句话起不到判断的作用呢!你怎么判断的呢!servlet上传没用过,用的是struts2
如果list不为空,就会打印“上传成功”进去调试下,看request.getSession().getServletContext().getRealPath("/file")+ "/" + fileName
是什么路径,是不是你想要的。
如果list不为空,就会打印“上传成功”进去调试下,看request.getSession().getServletContext().getRealPath("/file")+ "/" + fileName
是什么路径,是不是你想要的。
out.flush();
out.close();
放到trycatch里边吧。
另外可以打印下文件路径看是不是你想要的。