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
- Django上传文本文件
- 上传 文本文件 ,jpg
- php处理上传文本文件
- TCP实现 文本文件上传
- java(7)--上传文本文件
- jsp 实现文本文件上传
- TCP-上传文本文件
- TCP实现文本文件上传
- 文本文件上传数据库
- 文件上传(一)原生文本文件上传
- Django - 上传文件(初稿)
- django 文件上传
- django 文件上传
- Django的文件上传
- DJANGO 上传 image
- django上传文件
- django上传图片
- django 文件上传
- slf4j logback创建日志
- 数据结构实验之栈四:括号匹配
- tjut 5213
- 如何配置文件DSN
- 印刷电路板(PCB)的制作工艺流程
- Django上传文本文件
- thinkphp分页显示
- Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- JavaMail--基础类详解
- JDBC基础应用(数据库增删改查)
- 在VS2015中用C++创建MFC规则动态库DLL
- dl4j基本环境搭建(win7+64位jdk1.8+IDEA)
- laravel 社区 使用ModelFactory 生产测试数据 artisan 建表
- UVALive-7392 - Bundles of Joy【树型DP】【深搜】【好题】