1.from表單上傳文件
知識點補充: 1.發送文件 : form 必須加入enctype="multipart/form-data"
2.上傳文件標簽: <input type="file" name="img" >
3.在前段通過form 傳過來的值為可迭代對象
4.
創建url
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^upload.html$', views.upload), ]
增加view
from django.shortcuts import render from django.shortcuts import HttpResponse # Create your views here. from app01 import models def upload(request): if request.method=="GET": return render(request,'upload.html') else: user=request.POST.get('user') img=request.FILES.get('img') print(img.name) print(img.size) #img 有大小 名字等 '''寫入文件''' f=open(img.name,'wb') for line in img.chunks(): #img.chunks()為可迭代對象 f.write(line) f.close() return HttpResponse('.........')
寫一個html
制定上傳圖標:
1.調制上傳 input 標簽的透明度
2.設置 position位置: position: absolute; top: 0;left: 0
3.在input上方加入一個標簽,引入Bootstrap,調制樣式 例如: <a class="glyphicon glyphicon-plane">上傳</a>
4.把a標簽,和input標簽加入一個div標簽 給div設置 ------>"position: relative"
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"> </head> <body> <form action="upload.html" method="POST" enctype="multipart/form-data"> {% csrf_token %} <input type="text" name="user" /> <div style="position: relative"> <a class="glyphicon glyphicon-plane">上傳</a> <input type="file" name="img" style="opacity: 0; position: absolute; top: 0;left: 0 "/> </div> <input type="submit" value="提交"> </form> </body> <script src="/static/jquery-3.1.1.js"></script> <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.js"></script> </html>
form表單加入驗證:
view
from django.shortcuts import render from django.shortcuts import HttpResponse # Create your views here. from django import forms from django.forms import fields class Uploadform(forms.Form): user=fields.CharField( max_length=32, required=True, ) img=fields.FileField() from app01 import models def upload(request): if request.method=="GET": return render(request,'upload.html') else: 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('.........')