Django 文件上传

在django开发网页中经常会遇到需要将本地的文件上传到服务器,这里我们就需要通过post请求将数据推送到服务器上去

1 ,定义视图

def upLoadPic(request):
    return render(request, 'booktest/upLoadPic.html')   

2 ,定义URL

 path('upLoadPic/',views.upLoadPic,name='upLoadPic'),

3 ,前台界面html

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

</body>
</html>

其实这里也就是一个表单,通过post请求提交相关的数据

这里写图片描述
从上面可以看到,当点击提交的时候.post请求会携带数据发送到
http://127.0.0.1:8000/uploadHandler/ 这个地址,那我在定义一个处理数据的视图

上传部分

def uploadHandler(request):
    if request.method == "POST":
        f1 = request.FILES['pic1']
        fname = '%scar/%s'%(MEDA_PATH, f1.name)
        #fname = 'static/media/car/a.png'
        print(fname)
        with open(fname, 'wb+') as pic:
            # 根据上传的流中的数据一点一点往内存中写
            for c in f1.chunks():
                pic.write(c)
        return HttpResponse(fname)
    else:
        return HttpResponse("ERROR")

配置下 URL:
path(‘uploadHandler/’, views.uploadHandler,name=’uploadHandler’)

注释:解释下上面的内容,当post请求携带数据传到相关的页面后,这个接收页面,

  1. 首先判断是不是POST请求,表单提交一定是post请求
  2. 通过request.FILES[‘pic1’] 拿到指定的文件 pic1是传过来的键
  3. 拼接需要存放的目标地址
  4. 通过with,使用二进制的写权限向指定目录中写
  5. 这里的 f1.chunks()表示将数据分块写到相关位置

猜你喜欢

转载自blog.csdn.net/jeekmary/article/details/80597309
今日推荐