Джанго загрузка файлов [одного / несколько загрузки изображения]

Препараты

Python: 3.6.8 
Джанго: 2.2.1

Новый проект Джанго

 Определить имя проекта, использование виртуальных сред [Конечно, это может также изменить последнее], имя приложения

Создан, выберите Открыть в новом окне

Загрузить фотографии

Измените файл конфигурации DjangoFileUpload / settings.py

= MEDIA_URL '/ Медиа /' 
из MEDIA_ROOT его в os.path.join = (base_dir, 'Медиа'). Replace ( '\\', '/') является корневой путь загрузки #media фото

 Добавить таблицу модель FileUpload / models.py

Модели django.db Импорт из 

класса Img (models.Model): 
    img_url = models.ImageField (= upload_to 'фото /', пустой = True, NULL = True) # Загрузка изображений указанного пути, то есть, медиа / фото /

Миграция данных

питон manage.py makemigrations
питон manage.py мигрировать
(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 多图上传已经完成  

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

 

рекомендация

отwww.cnblogs.com/mosson/p/11059149.html