新上传的文件和Tomcat?

我有一个简单的servlet用于图像上传,用户选择一个图像,servlet完成其工作,然后将其写入上传目录。 我的项目布局:

project ├───static │ ├───img │ └───js ├───upload └───WEB-INF └───lib 

上传图像后,用户将被重定向到其位置:

 http://localhost:8080/upload/[image MD5 hash].png 

上传代码工作得很好,但是在请求url时Tomcat返回404错误,即使图像在那里:

 > wget http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\GnuWin32/etc/wgetrc --2013-01-16 03:45:33-- http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png Resolving localhost... 127.0.0.1, ::1 Connecting to localhost|127.0.0.1|:8080... connected. HTTP request sent, awaiting response... 404 Not Found 2013-01-16 03:45:33 ERROR 404: Not Found. > 

在我的IDE,Intellij中单击update classes and resources后,它可以工作:

 > wget http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\GnuWin32/etc/wgetrc --2013-01-16 03:48:11-- http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png Resolving localhost... 127.0.0.1, ::1 Connecting to localhost|127.0.0.1|:8080... connected. HTTP request sent, awaiting response... 200 OK Length: 11666 (11K) [image/png] Saving to: `f5d1da2cadf3bd1c1b9196ec522a5d73.png' 100%[==========================================================>] 11,666 --.-K/s in 0s 2013-01-16 03:48:11 (72.9 MB/s) - `f5d1da2cadf3bd1c1b9196ec522a5d73.png' saved [11666/11666] > 

第二件事是,当我手动删除这个图像时,我仍然可以下载它(Tomcat会做某种兑现吗?):

 > del f5d1da2cadf3bd1c1b9196ec522a5d73.png > wget http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\GnuWin32/etc/wgetrc --2013-01-16 04:12:25-- http://localhost:8080/upload/f5d1da2cadf3bd1c1b9196ec522a5d73.png Resolving localhost... 127.0.0.1, ::1 Connecting to localhost|127.0.0.1|:8080... connected. HTTP request sent, awaiting response... 200 OK Length: 11666 (11K) [image/png] Saving to: `f5d1da2cadf3bd1c1b9196ec522a5d73.png' 100%[==========================================================>] 11,666 --.-K/s in 0s 2013-01-16 04:12:25 (93.2 MB/s) - `f5d1da2cadf3bd1c1b9196ec522a5d73.png' saved [11666/11666] > 

我的web.xml文件:

  default /static/* /upload/*  

有人可以告诉我问题出在哪里?

在开发中部署时,您的资源将部署在开发资源而不是工作空间中,当您在工作空间中删除时,必须重新部署以进行开发资源的更改

我的英文,

这不是处理文件上传的正确方法。 您不应将上载的文件存储在deploy文件夹中。 您当然也不应该在webapp自己的web.xml映射特定于容器的默认servlet。 您应该将上载的文件存储在本地磁盘文件系统上其他位置的固定的非部署相关文件夹中,然后通过Tomcat中的新发布它。 例如

  

也可以看看:

  • 上传的图像仅在刷新页面后可用