Tomcat Servlet:等待文件完全上传并保存在磁盘上

时间:2017-01-29 23:48:47

标签: java jsp tomcat servlets

我很生气,如果没有你的帮助,我很难解决这个问题。我正在用servlet / jstl / jsp技术创建一个Tomcat的项目,我遇到了一个让照片上传的问题。

例如:用户更新他的个人资料图片。他点击了html中多部分表单的提交按钮,然后一个servlet将处理他的请求。 我的servlet使用multipart上传文件。 servlet将使用照片的新名称更新数据库中的图像配置文件(在会话中也更新用户对象),最后,它将返回一个页面,其中配置文件图像应该是最新的,但它将不会被加载。如果我检查img元素,路径是正确的,因为如果我在地址栏中复制img源它将显示正确的图像。

我认为问题如下:多部分请求将处理上传文件异步,因此当servlet重定向到profile.jsp页面时,此时加载正在写入磁盘的映像时将会遇到问题。我想这是问题所在,但我不确定。 有没有办法等待多部分完成加载照片,因为如果我刷新profile.jsp页面,照片会在屏幕上清晰地绘制而没有问题。

这是Servlet的doPost方法中的代码(没有空值控制的简化,...)

MultipartRequest multi = new MultipartRequest(request, manager.completePath + "/web" + dirName, 10 * 1024 * 1024, "ISO-8859-1", new DefaultFileRenamePolicy());

Enumeration files = multi.getFileNames();
String name = null;
while (files.hasMoreElements()) {
    name = (String) files.nextElement();
}

RequestDispatcher rd;

String newAvPath = multi.getFilesystemName(name);

HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
user.updateImgProfile(newAvPath);

rd = request.getRequestDispatcher("/profile.jsp");  

rd.forward(request, response);

请提前告诉我我的英语,因为我是意大利人并感谢所有人:)

0 个答案:

没有答案