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

Django中获取上传docx文件实际路径解决python-docx读取报错

问题根因

传给python-docx的文件路径错误,你传的是Web访问路径,不是服务器本地磁盘的真实存储路径,库无法读取到对应文件才触发PackageNotFoundError。

具体错误点
  • 你在视图中调用new_doc.file1.url这类写法取到的是Web访问前缀路径,也就是报错里显示的/media/documents/word/xxx.docx,这个路径是给浏览器拼访问地址用的,指向系统根目录下的media文件夹,不是你项目里存上传文件的media目录。
  • 你在settings中配置的MEDIA_ROOT = os.path.join(BASE_DIR,'media')才是上传文件的真实磁盘根目录,文件实际存放在你的项目文件夹/media/documents/word/路径下,和你传给库的路径完全不匹配。
  • 现有合并逻辑里直接执行doc.save('ss merged.docx')会把生成的文件存在Django运行的工作目录,不会存到MEDIA_ROOT下,后续下载链接会直接404。
  • settings.py存在笔误:TATIC_URL = 'static/'缺少首字母S,会导致静态文件加载异常。
修复方案

1. 替换传参的属性,用磁盘绝对路径

把home视图中取文件路径的部分从.url换成.path,这个属性会自动拼接MEDIA_ROOT返回真实磁盘路径,直接传给python-docx即可正常读取:

# 注释掉原来错误的取url写法
# file1_name = new_doc.file1.url
# file2_name = new_doc.file2.url
# file3_name = new_doc.file3.url
# 替换为取本地磁盘路径
file1_path = new_doc.file1.path
file2_path = new_doc.file2.path
file3_path = new_doc.file3.path

number = new_doc.pk
SS_Merge(response, number, file1_path, file2_path, file3_path)

2. 修正合并文件的存储逻辑

不要把合并后的文件存在工作目录,要存到MEDIA_ROOT下的对应上传目录,同时关联到模型的file_processed字段,保证下载链接能正常访问:

import os
from django.conf import settings

def SS_Merge(response, n, f1,f2,f3):
    file = Mydocument.objects.get(id=n)
    doc1 = dc.Document(f1)
    doc2 = dc.Document(f2)
    doc3 = dc.Document(f3)
    
    # 保留你原有的表格合并逻辑
    # ......(此处省略你原来写的合并处理代码)

    # 拼接合并后文件的存储路径
    merged_file_name = f"merged_ss_{n}.docx"
    merged_full_path = os.path.join(settings.MEDIA_ROOT, 'documents/word', merged_file_name)
    # 替换成你最终合并完成的doc对象调用save
    merged_doc.save(merged_full_path)

    # 把生成的文件关联到数据库记录
    file.file_processed = f"documents/word/{merged_file_name}"
    file.save()

    return render(response, 'download.html', {'file': file})

3. 修正settings.py笔误

把写错的TATIC_URL = 'static/'改成STATIC_URL = 'static/',避免静态资源加载失败。

验证方法

改完后可以打印传给dc.Document()的路径,确认路径是从你项目存放目录开始的完整路径(比如/home/xxx/yourproject/media/documents/word/xxx.docx),而非从系统根目录开始的/media/xxx,库就能正常读取文件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:57:14