国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 尉犁县| 济宁市| 东平县| 平潭县| 教育| 柞水县| 宝山区| 韶山市| 抚宁县| 兴文县| 东阳市| 华容县| 安顺市| 布尔津县| 永德县| 惠水县| 邛崃市| 铜川市| 沾益县| 洛宁县| 长泰县| 和平区| 保靖县| 红河县| 凤城市| 富源县| 商洛市| 东海县| 六枝特区| 凤城市| 英吉沙县| 巩义市| 淮阳县| 西林县| 平昌县| 湄潭县| 砚山县| 西昌市| 普兰县| 新闻| 肇东市|