Django自学笔记之图片上传

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z564359805/article/details/89949585

settings.py中:

# 增加
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static'),
]

MEDIA_ROOT = os.path.join(BASE_DIR,'static/media')

views.py中: 

from django.shortcuts import render
from django.http import HttpResponse
from django.conf import settings
import os

# 上传图片
def upladPic(request):
    return render(request,'uploadPic.html')

# 接收图片
def uploadHandle(request):
    if 'pic1' in request.FILES:
        f1 = request.FILES['pic1']
        # print(f1.name) # 上传文件名字
        # print(f1.size) # 上传文件大小
        fsize = float('%.2f'%(f1.size/1024)) # 换算成KB保留两位小数
        pic_list = ['jpg','gif','png','jpeg']
        up_file = f1.name
        # 校验图片格式是不是图片格式
        img_format = up_file.split('.')[-1].lower()
        if img_format in pic_list:
            if fsize <= 500:
                # fname = ('%s/%s'%(settings.MEDIA_ROOT,f1.name))
                fname = os.path.join(settings.MEDIA_ROOT,f1.name)
                with open(fname,'wb')as f:
                    for c in f1.chunks():
                        f.write(c)
                # 图片路径:media/a1.jpg
                context = {
                    'fname':'media/'+up_file,
                }
                # return HttpResponse('文件成功上传至:%s'%fname)
                return render(request,'show_image.html',context)
            else:
                return HttpResponse('上传失败,文件大小不能超过500KB,该文件大小为:%sKB'%fsize)
        else:
            return HttpResponse("上传失败,只允许上传图片格式文件[jpg,gif,png,jpeg],该文件格式为:%s" % img_format)
    else:
        return HttpResponse("上传失败,未选择任何文件!")

templates新建uploadPic.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/uploadHandle/" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="pic1">
    <br>只允许上传大小不超过500KB图片格式文件[jpg,gif,png,jpeg]
    <br>
    <input type="submit" value="上传图片">

</form>

</body>
</html>

templates新建show_image.html,用于将上传的图片显示出来:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>将上传的图片显示出来</title>
</head>
<body>
{% load staticfiles %}
上传的图片为:
<br>
<br>
<img src="{% static fname %}" alt="">
</body>
</html>

配置url,应用名为booktest:


from django.urls import path
from booktest import views

urlpatterns = [
    path('upladPic/',views.upladPic),
    path('uploadHandle/',views.uploadHandle),

]

启动服务:

python manage.py runserver

打开网址:http://127.0.0.1:8000/upladPic/

上传完毕会跳转到这个网址将图片显示出来:http://127.0.0.1:8000/uploadHandle/

如果成功会在项目的:static/media目录下生成上传的文件。

猜你喜欢

转载自blog.csdn.net/z564359805/article/details/89949585