Django上传文本文件

来源:互联网 发布:python 3程序开发指南 编辑:程序博客网 时间:2024/04/30 17:56

前置条件:
1.创建了名为mydjango的project
2.创建了名为learn的app
3.learn中创建了模板文件夹templates
项目结构图如下:
这里写图片描述

具体流程如下:
1.在应用learn中新建forms.py,编写文件上传form对象:

from django import formsclass UploadFileForm(forms.Form):    title = forms.CharField(max_length=50)    file = forms.FileField()

2.建立package工具包,定义一个文件处理工具模块FileTools.py,遍历UploadedFile.chunks(),而不是使用read(),能确保大文件并不会占用系统过多的内存:

def handle_upload_file(file):    with open('name.txt', 'wb+') as destination:        for chunk in file.chunks():            destination.write(chunk)

3.views.py中定义处理文件上传的controller方法:

from django.http import HttpResponsefrom django.http import HttpResponseRedirectfrom .forms import UploadFileFormfrom learn.tools.FileTools import handle_upload_file'''上传文件处理'''def upload_file(request):    if request.method == 'POST':        form = UploadFileForm(request.POST, request.FILES)        if form.is_valid():            handle_upload_file(request.FILES.get('file', None))            ftemp = request.FILES.get('file', None)            print('ftemp: ', ftemp)            return HttpResponseRedirect('/success/')    else:        form = UploadFileForm()    return render(request, 'upload.html', {'form':form})'''上传成功跳转处理'''def uploadFileResult(request):    result = u'成功......'    return render(request, 'success.html', {'result':result})

4.templates中添加模板文件success.html和upload.html:
success.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>文件上传结果</title></head><body>    文件上传成功</body></html>

upload.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>文件上传</title></head><body>    <form method="post" enctype="multipart/form-data">        {% csrf_token %}        {{ form }}        <input type="submit" value="提交"/>    </form></body></html>

5.添加请求url,修改mydjango下的urls.py:

urlpatterns = [    url(r'^$', learn_views.index, name='home'),    url(r'^success/$', learn_views.uploadFileResult, name='success'),    url(r'^uploadFile/$', learn_views.upload_file, name='upload'),    #url(r'^$', learn_views.index),    #url(r'^$', learn_views.home, name='home'),    #url(r'^form/$', learn_views.form, name='form'),    #url(r'^add/$', learn_views.add, name='add'),    #url(r'^add_a_b/(\d+)/(\d+)/$', learn_views.add2, name='add2'),    #url(r'^hello/$', learn_views.hello),    url(r'^admin/', admin.site.urls),]

6.启动运行,浏览器中输入http://127.0.0.1:8000/uploadFile/:
这里写图片描述
选择文件上传,结果为:
这里写图片描述
7.在mydjango下,可以看到name.txt文件,文件内容为上传的文件内容:
这里写图片描述

0 0
原创粉丝点击