Django之上传文件

 

-----------------------view.py-----------------------
from django import forms
from django.forms import fields
class UploadForm(forms.Form):
    user = fields.CharField()
    img = fields.FileField()

def upload(request):
    if request.method == 'GET':
        return render(request,'upload.html')
    else:
        # 基于Form做的文件上传
        # obj = UploadForm(request.POST,request.FILES)
        # if obj.is_valid():
        #     user = obj.cleaned_data['user']
        #     img = obj.cleaned_data['img']

        # 普通版的文件上传
        user = request.POST.get('user')
        img = request.FILES.get('img') # 获取传过来的文件
        # img是对象(文件大小,文件名称,文件内容...)
        print(img.name,img.size)
        f = open(img.name,'wb') # 把上传的文件写入本地
        for line in img.chunks():  # 文件不会一次性全部上传,返回的是迭代器,一点一点取
            f.write(line)
        return HttpResponse('ok')
-----------------------html----------------------------
<body>
<form action="/upload/" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <p><input type="text" name="user"></p>
    <div style="position: relative">
        <a href="">上传</a>
        <p><input type="file" name="img" style="opacity: 0;position: absolute;top: 0px;left: 0px"></p>
    </div>
    <p><input type="submit" value="提交"></p>
</form>

</body>
-------------------------urls.py----------------------
urlpatterns = [
    path('admin/', admin.site.urls),
    path('upload/', views.upload),
]

 

posted @ 2019-03-05 15:49  烛爻  阅读(112)  评论(0)    收藏  举报