Django之文件上传
一、简单的文件(图片)上传
1、url
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^upload/', views.Upload.as_view()),
]
2、views函数(这里用的CBV)
from django.shortcuts import render, HttpResponse
from django.views import View
class Upload(View):
def get(self, request):
return render(request, 'upload.html')
def post(self, request):
user = request.POST.get('user')
img = request.FILES.get('img')
f = open(img.name, 'wb')
for line in img.chunks():
f.write(line)
f.close()
return HttpResponse('上传成功')
3、HTML
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" name="user">
<input type="file" name="img">
<input type="submit" name="提交">
</form>
二、自定义上传按钮
将“一”中的HTML改为
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" name="user">
<div style="position: relative">
<a>上传</a>
<input type="file" name="img" style="opacity: 0;position: absolute;top: 0;left: 0">
</div>
<input type="submit" name="提交">
</form>
三、用Form组件上传
把“一”中的views改为
from django.shortcuts import render, HttpResponse
from django.views import View
from django import forms
from django.forms import fields
class UploadForm(forms.Form):
user = fields.CharField()
img = fields.FileField()
class Upload(View):
def get(self, request):
return render(request, 'upload.html')
def post(self, request):
obj = UploadForm(request.POST, request.FILES)
if obj.is_valid():
user = obj.cleaned_data['user']
img = obj.cleaned_data['img']
f = open(img.name, 'wb')
for line in img.chunks():
f.write(line)
f.close()
return HttpResponse('上传成功')
还没有评论,来说两句吧...