gpt4 book ai didi

java - 新上传的文件和 Tomcat?

转载 作者:行者123 更新时间:2023-11-28 22:09:10 25 4
gpt4 key购买 nike

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

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

上传图片后,用户被重定向到它的位置:

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

上传代码运行良好,但 Tomcat 在请求 url 时返回 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 文件:

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
<url-pattern>/upload/*</url-pattern>
</servlet-mapping>

谁能告诉我问题出在哪里?

最佳答案

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

<Context docBase="/var/webapp/upload" path="/upload" />

另见:

关于java - 新上传的文件和 Tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14349834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com