国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django處理文件上傳File Uploads的實(shí)例

2020-02-15 21:32:01
字體:
供稿:網(wǎng)友

HttpRequest.FILES

表單上傳的文件對象存儲在類字典對象request.FILES中,表單格式需為multipart/form-data

<form enctype="multipart/form-data" method="post" action="/foo/"><input type="file" name="image" />

request.FILES中的鍵來自于表單中的<input type="file" name="" />的name值:

img=request.FILES['image']

request.FILES中的值均為UploadedFile類文件對象。

UploadedFile

UploadedFile是類文件對象,具有以下方法和屬性:

UploadedFile.read()

讀取整個上傳文件的數(shù)據(jù),文件較大時(shí)慎用。

UploadedFile.multiple_chunks(chunk_size=None)

判斷文件是否足夠大,一般為2.5M

UploadedFile.chunks(chunk_size=None)

返回一個生成器對象,當(dāng)multiple_chunks()為True時(shí)應(yīng)該使用這個方法來代替read().

UploadedFile.name

上傳文件的name。

UploadedFile.size

上傳文件的大小。

UploadedFile.content_type

上傳文件時(shí)的content_type報(bào)頭,例如(e.g. text/plain or application/pdf).

UpladedFile.charset

編碼

存儲文件

想將上傳的文件存儲在本地時(shí):

f=request.FILES['image']with open('some/file/name.txt', 'wb+') as destination: for chunk in f.chunks():  destination.write(chunk)

使用Form處理上傳文件

也可以使用django自帶的form來處理上傳文件。

先創(chuàng)建帶FileFiled或者ImageFiled的Form:

# In forms.py...from django import forms class UploadFileForm(forms.Form): title = forms.CharField(max_length=50) file = forms.FileField()

用Form處理:

>>> f =UploadFileFormt(request.POST, request.FILES)

view函數(shù):

from django.http import HttpResponseRedirectfrom django.shortcuts import render_to_responsefrom .forms import UploadFileForm def handle_uploaded_file(f): with open('some/file/name.txt', 'wb+') as destination:  for chunk in f.chunks():   destination.write(chunk) def upload_file(request): if request.method == 'POST':  form = UploadFileForm(request.POST, request.FILES)  if form.is_valid():   handle_uploaded_file(request.FILES['file'])   return HttpResponseRedirect('/success/url/') else:  form = UploadFileForm() return render_to_response('upload.html', {'form': form})

使用Model處理上傳文件

如果創(chuàng)建了一個帶FileField或者ImageField域的Model,需要將上傳文件存儲到Model的FileFIeld域。

比如,使用nicEdit文本編輯器時(shí),需要存儲上傳的文件,建立Model:

from django.db import models class NicEditImage(models.Model): image = models.ImageField(upload_to='nicedit/%Y/%m/%d')            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵石县| 金乡县| 化德县| 绍兴县| 正蓝旗| 巫山县| 江源县| 黔江区| 左云县| 隆回县| 高平市| 黔西县| 扬中市| 潮安县| 大理市| 岳池县| 剑阁县| 凌云县| 武宁县| 明星| 云霄县| 双城市| 波密县| 凤山县| 民乐县| 莆田市| 海晏县| 云和县| 巩留县| 宁安市| 那坡县| 望谟县| 钟山县| 平舆县| 襄城县| 赣榆县| 牟定县| 溧水县| 台北市| 嘉定区| 德州市|