准备工作

python:3.6.8
django:2.2.1

新建django项目

确定项目名称、使用的虚拟环境【当然这个也可以后期修改】、app的名称

创建成功,选择在新的窗口中打开

图片上传

修改配置文件DjangoFileUpload/settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') #media即为图片上传的根路径

添加表模型FileUpload/models.py

from django.db import models

class Img(models.Model):
img_url = models.ImageField(upload_to='photos/',blank=True,null=True) #指定图片上传路径,即media/photos/

数据迁移

python manage.py makemigrations
python manage.py migrate
(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload » python manage.py makemigrations mosson@bogon
Migrations for 'fileUpload':
fileUpload/migrations/0001_initial.py
- Create model Img
(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload » python manage.py migrate mosson@bogon
Operations to perform:
Apply all migrations: admin, auth, contenttypes, fileUpload, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying fileUpload.0001_initial... OK
Applying sessions.0001_initial... OK
(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload »

增加图片上传的路由 DjangoFileUpload/urls.py

from django.contrib import admin
from django.urls import path
from fileUpload import views urlpatterns = [
path('admin/', admin.site.urls),
path(r'uploadImg/',views.uploadImg,name='uploadImg'),
]

增加图片上传的视图 views.py

from .models import Img

#图片上传
def uploadImg(request):
if request.method == 'POST':
img = Img(img_url=request.FILES.get('img'))
img.save()
return render(request, 'imgUpload.html')

新增页面templates/imgUpload.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片上传</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="img">
<input type="submit" value="上传">
</form>
</body>
</html>

项目启动

(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload » python manage.py runserver 0.0.0.0:8008 mosson@bogon
Watching for file changes with StatReloader
Performing system checks... System check identified no issues (0 silenced).
June 20, 2019 - 07:58:37
Django version 2.2.1, using settings 'DjangoFileUpload.settings'
Starting development server at http://0.0.0.0:8008/
Quit the server with CONTROL-C.

访问页面上传图片

到这里已经完成了。

===============================分割线  多图上传===============================

1 修改imgUpload.html

把<input type="file" name="img">
改成<input type="file" name="img" multiple="">,就这一处而已,其他都不动

2 views.py

from DjangoFileUpload.settings import BASE_DIR
def uploadImg(request):
files = request.FILES.getlist('img')
for f in files:
destination = open(BASE_DIR + '/media/photos/' + f.name,'wb+') #上传的文件都放到/media/photos/文件夹里
for chunk in f.chunks():
destination.write(chunk)
destination.close()
return render(request, 'imgUpload.html')  

OK 多图上传已经完成  

=======================码字不易,多多支持===================================

Django文件上传【单个/多个图片上传】的更多相关文章

  1. django之创建第10-1个项目-图片上传并记录上传时间

    1.百度云盘:django之创建第10-1个项目-图片上传并记录上传时间 2.主要修改的配置文件有3个,forms.views和models3个文件以及html 3.forms.py文件修改 #cod ...

  2. django之创建第10个项目-图片上传方式1

    1.upload.HTMl <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang=& ...

  3. django admin后台接入tinymce并且支持图片上传

    首先:下载tinymce 地址是https://www.tinymce.com/ 点击download 下载社区版本即可 接着:把压缩包内tinymce目录内的所有文件和文件夹复制到Django项目中 ...

  4. .net core 基于multipart/form-data的文件上传,这里以图片上传为例

    首先传递的数据格式大概如下: 然后就可以在后端获取数据了:直接上代码了哈: [HttpPost]        ///分别获取 data数据和调用图片上传方法 public async Task< ...

  5. [py][mx]django添加后台课程机构页数据-图片上传设置

    分析下课程页前台部分 机构类别-目前机构库中没有这个字段,需要追加下 所在地区 xadmin可以手动添加 课程机构 涉及到机构封面图, 即图片上传media设置, 也需要在xadmin里手动添加几条 ...

  6. [上传下载] C# ImageUpload图片上传类教程与源码下载 (转载)

    点击下载 ImageUpload.zip 功能如下图片1.设置属性后上传图片,用法如下 /// <summary> /// 图片上传类 /// </summary> //--- ...

  7. megapix-image插件 使用Canvas压缩图片上传 解决手机端图片上传功能的问题

    最近在弄微信端的公众号.订阅号的相关功能,发现原本网页上用的uploadify图片上传功能到手机端有的手机类型上就不能用了,比如iphone,至于为啥我想应该不用多说了吧(uploadify使用fla ...

  8. ueditor 编辑器上传到服务器后图片上传不能正常使用

    网站集成ueditor编辑器后在本地能正常使用,上传到服务器上后,图片上传功能提示:后端配置项没有正常加载,上传插件不能正常使用.且单个图片上传图标是灰色的不能点击. 相信遇到这个问题的同学是很多的吧 ...

  9. ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

随机推荐

  1. duba网址对firefox快捷方式的劫持

    直接删除 “驱动精灵” 即可. 等我 二进制安全 学好了,一定开发一种病毒专干这种劫持的,煞笔软件.

  2. C#调用Activex中串口电子秤的数据,并将电子秤的数据显示到前端页面

    大二的一个项目需要用到Activex技术将读取到串口中的数据在后台获取到,并将串口的数据写入数据库,这个过程需要在后台使用C#调用Activex控件已经使用的方法,然后在前端通过JavaScript进 ...

  3. Python中的常见特殊方法—— del方法

    __del__() 方法用于销毁Python对象——在任何Python对象将被系统回收的时候,系统都会自动调用这个方法.但是不要以为对一个变量执行del操作,该变量引用的对象就会被回收,当然不是,如果 ...

  4. 如何优雅地处理Async/Await的异常?

    译者按: 使用.catch()来捕获所有的异常 原文: Async Await Error Handling in JavaScript 译者: Fundebug 本文采用意译,版权归原作者所有 as ...

  5. Dubbo启动,调用方法失败【问题:调用超时】

    今天,启动dubbo,开始写项目. 在一个调用dubbo里面的一个方法时,程序一直调用,每次显示报红. 很难搞. 问题代码 com.alibaba.dubbo.rpc.RpcException: Fa ...

  6. Linux内核编程、调试技巧小集【转】

    转自:https://www.cnblogs.com/arnoldlu/p/7152488.html 1. 内核中通过lookup_symbol_name获取函数名称 内核中很多结构体成员是函数,有时 ...

  7. Mac环境下 jieba 配置记录

    在终端里输入: pip3 install jieba -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

  8. 03-cmake语法-变量,字符串

    CMake的基本数据类型是字符串(不区分大小写),一组字符串在一起称为列表(list). 条件判断中的取值情况如下表: 真 1, ON, YES, TRUE, Y, 非0的数  假 0, OFF, N ...

  9. <console>:14: error: not found: value spark import spark.implicits.

    启动 ./spark-shell 出现问题 启动 hadoop, 并创建,解决 hadoop fs -mkdir /directory 解决了

  10. zz2019年主动学习有哪些进展?答案在这三篇论文里

    2019年主动学习有哪些进展?答案在这三篇论文里 目前推广应用的机器学习方法或模型主要解决分类问题,即给定一组数据(文本.图像.视频等),判断数据类别或将同类数据归类等,训练过程依赖于已标注类别的训练 ...