You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java Servlet上传文件时出现资源未找到问题

回答:

嘿,你自己找到的问题点完全正确!我帮你拆解下为什么会出现这种看似奇怪的错误提示:

  1. Servlet根本没被服务器加载
    Java Web项目有严格的目录规范:你的Servlet类必须放在WEB-INF/src(如果是Maven/Gradle项目则是src/main/java)目录下,这样构建工具才会把编译后的.class文件放到WEB-INF/classes目录里——这是服务器默认扫描加载Servlet的位置。你把Java文件直接放在根src目录,编译后的文件根本不在服务器能识别的路径里,导致@WebServlet配置的urlPatterns = "upload"完全没生效。

  2. 错误路径的由来
    当表单提交到action="upload"时,服务器找不到对应的Servlet映射,就会把这个请求当成静态资源请求,自动去你的项目上下文路径(也就是/proj/publ/)下找名为uploads的资源,自然就会抛出“资源不可用”的错误——这就是那个不存在的/proj/publ/uploads路径的来源!

另外给你提个小优化建议:就算Servlet部署正确了,你代码里的serverPath = "/fileuploads"也有隐患,这是服务器的绝对路径,不是你项目的专属目录。如果要指定到项目相关的/proj/publ/fileuploads,可以用ServletContext获取真实路径,还能提前创建目录避免报错:

// 获取项目部署后的实际磁盘路径
String realPath = getServletContext().getRealPath("/fileuploads");
// 确保目录存在,避免FileNotFoundException
File uploadDir = new File(realPath);
if (!uploadDir.exists()) {
    uploadDir.mkdirs();
}

内容的提问来源于stack exchange,提问作者Viking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:38:59