今天测试上传图片的时候,发现一只报错说找不到文件:FileNotFoundError

通过检查路径的输出,发现首先在settings配置路径的时候有问题

MEDIA_ROOT=os.path.join(BASE_DIR,'/static/media')
这里多了一个/ 所以导致拼接后的路径是由C盘开始的,而不是项目路径开始的 (C:/static/media/filename.jpg)
MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')
改为这样后,仍然提示找不到上传文件路径
后来发现,报错的路径C:\Users\Admin\PycharmProjects\chuanzhi_test_dj2/static/media/filename.jpg
里是直接项目路径就到了/static/media
而我的的/static/media其实是建立在一个APP下的
于是又把路径改为:
MEDIA_ROOT=os.path.join(BASE_DIR,'img_test/static/media')
之后就成功啦
之前一直以为是保存上传文件的问题,(上传不成功,所以没有找到文件)当仔细检查后,就发现其实是那个用来保存上传文件的路径没对,程序找不到应该保存在哪,自然也不会写入文件
另外注意写入文件要用'wb' =============================================

另:关于显示上传后的图片,其实这个可以使用显示静态文件的方法,不过由于上传文件放在/static/media所以路径需要稍作修改
views.py:
from chuanzhi_test_dj2 import settings 要引入settings才有MEDIA_ROOT
def uploadHandler(request):
if request.method=='POST':
file=request.FILES['pic']
filedir="%s/%s" %(settings.MEDIA_ROOT,file.name) #这里在settings配置MEDIA_ROOT=os.path.join(BASE_DIR,'img_test/static/media')注意添加了APP路径
#其实当发现文件路径有问题就可以输出路径来看,检查数据路径和我们的项目结构是否对应
      context={'filedir':"media/"+file.name,}
#我的做法是先在这里拼接了media/filename路径,因为模板中使用static的话能自动找到APP下的static文件夹,所以只需再加一层media with open(filedir,'wb') as pic: #写入这里注意用wb
for c in file.chunks():
pic.write(c) return render(request,'img_test/showUploadFile.html',context) else:
return HttpResponse('error') 模板:
{% load static from staticfiles %} 这里和静态文件处理一样导入
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<img src="{% static filedir %}" alt=""> 把前面view传来的路径media/filename.xxx放到static后就会自动在static下找media/filename.xxx
<hr>

</body>
</html>

而urls.py配置如常:

app_name='img'

urlpatterns=[
re_path('upload_img/$',uploadImg,name='upload_img'),
re_path('uploadHandler/',uploadHandler,name='uploadHandler'),
]

【Django】关于上传图片遇到的问题的更多相关文章

  1. Django如何上传图片并对上传图片进行访问

    通过一个示例的完整演示过程,来学习django如何上传图片,以及对于media文件夹中的上传图片进行请求: 1.配置settings.py MEDIA_URL = '/media/' MEDIA_RO ...

  2. Django中上传图片---避免因图片重名导致被覆盖

    上一篇文章中(https://www.cnblogs.com/lutt/p/10640412.html),我们以图片文件夹+图片名字的方式来储存图片,这样的做法会导致有重名的图片会导致之前的图片被覆盖 ...

  3. [Django学习]上传图片

    上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为<input type="file" name="& ...

  4. django之上传图片

    上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为<input type="file" name="& ...

  5. Django 实现上传图片功能

    很多时候我们要用到图片上传功能,如果图片一直用放在别的网站上,通过加载网址的方式来显示的话其实也挺麻烦的,我们通过使用 django-filer 这个模块实现将图片文件直接放在自己的网站上. 感兴趣的 ...

  6. Django之上传图片,分页,三级联动

    Django1.8.2中文文档:Django1.8.2中文文档 上传图片 配置上传文件保存目录 1)新建上传文件保存目录. 2)配置上传文件保存目录. 后台管理页面上传图片 1)设计模型类. 2)迁移 ...

  7. django中上传图片的写法(转)

    view参数 @csrf_exemptdef before_upload_avatar(request):    before = True    return render_to_response( ...

  8. [系统开发] Django Admin上传图片简单校验

    我的 models里有个ImageField字段,用来保存用户头像,希望通过Django Admin上传时校验头像大小,如果太大就报错,并且不保存. 网上有不少方法,有的通过第三方软件实现,有的通过自 ...

  9. 关于django批量上传图片

    本来想一张一张上传的,但是明显会对客户造成不必要的麻烦,所以如果前台一次性上传五张十张的话,那就简单的多. 但是后台我数据库对于图片存储的字段只有一个,不可能有多少张照片就要多少个字段来存储.也就是说 ...

  10. django中上传图片的写法

    view参数 @csrf_exemptdef before_upload_avatar(request):    before = True    return render_to_response( ...

随机推荐

  1. 关于c风格的字符串的基本函数

    1.两个字符串的比较 //如果两个字符串相等 strcmp(s1,s2)=; //如果s1>s2 strcmp(s1,s2)>; //如果s1<s2 strcmp(s1,s2)< ...

  2. alpha冲刺(1/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 构建之法的阅读 问题困扰: Java的学习感觉无从下手,学基础语法好 ...

  3. 解决eclipse高版本JDK编译的项目到低版本JDK服务器上不能运行的问题

    错误提示信息:Unsupported major.minor version 52.0,意思是说,当前jdk的版本不支持更高版本jdk编译出来的class文件. 我的编译环境,eclipse使用的是j ...

  4. (27)session(设置值、取值、修改、删除)

    session的由来 Cookie虽然在一定程度上解决了“保持状态”的需求,但是由于Cookie本身最大支持4096字节,以及Cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西, ...

  5. 第一章 HTML+CSS(上)

    HTML 网页的组成 HTML简介 HTML的语法 HTML的常用标签 HTML中的表格和表单 CSS的简单应用 我们这里使用WebStorm开发工具 配置浏览器 常用插件: CodeGlance 代 ...

  6. centos7 下yum源安装nginx

    简单粗暴: .rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noar ...

  7. 【转】使用VisualStudio完成自动化C++代码生成和编译工作(GacUI)

    使用VisualStudio完成自动化C++代码生成和编译工作(GacUI)     GacUI终于进入制作dll的阶段了.昨天上传了一个新的工程,在Vczh Library++3.0(E:\Code ...

  8. jquery,attr,prop,checkbox标签已有checked=checked但是不显示勾选

    最近在做项目的过程中碰到了这样的一个问题:在使用bootstrap模态框的过程中,在模态框中有一个checkbox标签,一开始是为选中的,当点击触发模态框按钮,选中chcekbox时,会显示勾选,这个 ...

  9. Centos7 下的SVN安装与配置

    Centos7 下的SVN安装与配置 1.关闭防火墙 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机自关闭 systemctl disable firewalld 临 ...

  10. Activiti流程设计工具

    在Actitivi工程的src/main/resources新建一个文件夹diagrams 然后右键,创建一个activiti Diagram 取名为helloWorld后finish 中间区域,是我 ...