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

Django部署后文件存在却提示‘file wasn't available on site’问题求助

问题排查与解决方案

1. 检查媒体文件的Django核心配置

在settings.py中确认以下配置是否适配服务器环境:

  • MEDIA_ROOT:必须设置为服务器上的绝对路径,示例:
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    MEDIA_ROOT = os.path.join(BASE_DIR, 'Media')
    
  • MEDIA_URL:要与你生成的下载URL前缀完全匹配,示例:
    MEDIA_URL = '/Media/'
    
  • 项目根urls.py需添加媒体文件路由(仅开发环境DEBUG=True时生效,生产环境依赖Web服务器配置):
    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # 你的其他路由
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

2. 替换硬编码URL,用Django存储API生成路径

不要手动拼接dataurl和Processed_DataURL,改用FileSystemStorage的url()方法自动生成正确路径,避免大小写、路径拼接错误:

  • 在create_project视图中修改:
    fs = FileSystemStorage(location=f'Media/Projects/{user}')
    filename = fs.save(data.name, data)
    dataurl = fs.url(filename)  # 替代手动拼接的路径
    
  • 在process视图中修改:
    fs = FileSystemStorage(location=f'Media/Projects/Despiked/{user}')
    filename = fs.save(excel_file, open(excel_file, 'rb'))
    project.Processed_DataURL = fs.url(filename)  # 替代硬拼路径
    

3. 修正大小写匹配问题

Linux服务器是大小写敏感的,而Windows本地环境不敏感,需确认:

  • 代码中写的Media目录名,与服务器上实际目录名大小写完全一致(比如服务器上是media而代码写Media会直接找不到)
  • 文件名的大小写也需完全匹配,比如本地的Despiked - Test File.xlsx和服务器上的文件名称不能有大小写差异

4. 修复文件与目录权限

确保Web服务器进程(如Apache的www-data、Nginx的nginx用户)对Media目录及其子目录、文件拥有读取权限,以Ubuntu服务器为例执行命令:

sudo chown -R www-data:www-data /path/to/your/project/Media
sudo chmod -R 755 /path/to/your/project/Media

5. 配置Web服务器的媒体文件路由(生产环境必做)

Django在生产环境DEBUG=False时不会处理媒体文件请求,必须通过Web服务器直接映射:

Nginx配置示例

在虚拟主机配置中添加:

location /Media/ {
    alias /path/to/your/project/Media/;
    expires 30d;
}

Apache配置示例

在虚拟主机配置中添加:

Alias /Media/ /path/to/your/project/Media/
<Directory /path/to/your/project/Media/>
    Require all granted
</Directory>

配置完成后重启Web服务器生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:52:44