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

SpringBoot根目录uploads文件夹访问404:如何通过localhost:8081/uploads访问?

解决localhost:8081/uploads 404无法访问文件夹内容的问题

以下是不同后端框架下的具体配置方案,按照你的技术栈选择对应方法即可:

Node.js (Express)

Express 默认不会自动展示目录内容,需要结合 serve-index 包实现目录列表功能:

  1. 安装依赖:
    npm install serve-index
    
  2. 修改服务代码,挂载静态目录并启用目录浏览:
    const express = require('express');
    const serveIndex = require('serve-index');
    const path = require('path');
    const app = express();
    
    // 挂载uploads目录,支持目录列表展示
    app.use('/uploads', 
      express.static(path.join(__dirname, 'uploads')), 
      serveIndex(path.join(__dirname, 'uploads'), {'icons': true})
    );
    
    app.listen(8081, () => {
      console.log('Server running on port 8081');
    });
    
    注意:确保 uploads 文件夹存在于项目根目录,或通过绝对路径指定正确位置。

Python (Flask)

Flask 需手动实现目录列表或借助扩展:

方法1:手动生成目录页面

from flask import Flask, send_from_directory, render_template_string
import os

app = Flask(__name__)
UPLOAD_DIR = './uploads'

@app.route('/uploads/')
def show_uploads():
    file_list = os.listdir(UPLOAD_DIR)
    # 生成简易目录浏览HTML
    html_content = '<h2>uploads 目录内容</h2><ul>'
    for file in file_list:
        file_path = f'/uploads/{file}'
        html_content += f'<li><a href="{file_path}">{file}</a></li>'
    html_content += '</ul>'
    return render_template_string(html_content)

@app.route('/uploads/<path:filename>')
def serve_file(filename):
    return send_from_directory(UPLOAD_DIR, filename)

if __name__ == '__main__':
    app.run(port=8081)

方法2:使用 flask-autoindex 扩展

  1. 安装扩展:
    pip install flask-autoindex
    
  2. 配置代码:
    from flask import Flask
    from flask_autoindex import AutoIndex
    
    app = Flask(__name__)
    # 绑定uploads目录到指定URL
    AutoIndex(app, browse_root='./uploads', add_url_rules=False)
    app.add_url_rule('/uploads', 'uploads', AutoIndex.as_view('uploads', browse_root='./uploads'))
    
    app.run(port=8081)
    

Java (Spring Boot)

Spring Boot 默认不支持目录浏览,需通过配置或自定义Controller实现:

  1. 在 application.properties 中添加静态资源映射:
    spring.web.resources.static-locations=file:./uploads/
    spring.mvc.static-path-pattern=/uploads/**
    
  2. 自定义Controller返回目录列表:
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    @RestController
    @RequestMapping("/uploads")
    public class UploadsController {
        private final String UPLOAD_DIR = "./uploads/";
    
        @GetMapping("/")
        public String listFiles() {
            File dir = new File(UPLOAD_DIR);
            File[] files = dir.listFiles();
            if (files == null) return "目录不存在或无权限访问";
    
            StringBuilder html = new StringBuilder("<h2>uploads 目录内容</h2><ul>");
            for (File file : files) {
                String fileName = file.getName();
                html.append(String.format("<li><a href=\"/uploads/%s\">%s</a></li>", fileName, fileName));
            }
            html.append("</ul>");
            return html.toString();
        }
    }
    

通用检查项

  • 确认 uploads 文件夹存在,且服务器进程拥有该文件夹的读取权限
  • 访问时确保URL末尾带斜杠:localhost:8081/uploads/,部分服务器需要斜杠识别目录请求
  • 验证服务器端口确实为8081,未被其他进程占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:46:16