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

Django图片无法上传至Media目录,数据库存URL无实际文件如何解决?

问题原因及修复方案

1. 前端表单缺失文件上传属性

上传文件的表单必须添加enctype="multipart/form-data"属性,否则浏览器不会传输文件二进制内容,后端只能拿到文件名字符串,无法生成实际文件。
修复后的表单代码:

<form action="" method="post" enctype="multipart/form-data">
  {% csrf_token %}
  <input type="file" name="imgTest" id="imgTest">
  <input type="submit" value="submit">
</form>

2. 视图中获取上传文件的方式错误

Django中上传的文件不会存放在request.POST中,而是存放在request.FILES对象里,你之前从request.POST取到的只有文件名,没有实际文件内容,因此无法写入本地目录。
修复后的视图代码:

def goProfile(request):
 if request.method == "POST":
    image = Image(
        img = request.FILES.get('imgTest')
    )
    image.save()

 return render(request,'profile.html')

可选补充:开发环境访问媒体文件配置

如果后续需要在Django自带的开发服务器中直接访问上传的图片,需要在项目根urls.py中添加媒体资源路由:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # 原有其他路由规则
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:06:01