Django实现文件的上传

1、前端页面:使用file对象,读取文件对象传递到views中。需要设定enctype="multipart/form-data",表明不对字符进行编码。

<body>
<form method="POST" action="." enctype="multipart/form-data">
<p align="center">
<span> 请选择docx文件,默认是xx.docx:</span>
<input type="file" name="docxfile"/>
<input type="submit" value="提交"/>
</p>
</body>

2、在views.py中的处理函数,使用chunks()方法

def file_upload(request):  # 选择docx文件,并显示在页面
if request.method == "GET":
return render(request, 'file_upload.html')
elif request.method == "POST":
obj = request.FILES.get('filename')#FILES的对象
if obj:
#print(obj, obj.name)
file_path = os.path.join('upload', obj.name) #上传文件的路径+文件名
f = open(file_path, mode="wb") #打开文件对象
for i in obj.chunks(): #使用chunks()方法读取数据,写入文件
f.write(i)
f.close()
else:
file_path = os.path.join('upload', 'xxxxxx.docx')#默认文件
file_str = read_docxfile(file_path)#读取docx文件,传到前端页面显示
return render(request, 'file_upload.html', {'file_str': file_str})

最新文章

  1. Redis的三种启动方式
  2. 高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-2 发布
  3. [转]listview加载性能优化ViewHolder
  4. strlen和sizeof
  5. 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件
  6. SQL Server 2012 BI 学习 第一天
  7. HTML5元素拖拽实现示例
  8. call_user_func_array
  9. PHP扩展memcache模
  10. 谈论高并发(十二)分析java.util.concurrent.atomic.AtomicStampedReference看看如何解决源代码CAS的ABA问题
  11. htop命令使用详解
  12. Linux Vim查找字符串
  13. laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)
  14. Hessian序列化的一个潜在问题
  15. 手机连接WiFi有感叹号x怎么回事?如何消除手机WiFi感叹号?
  16. xcode9上传app时报错iTunes Store operation failed 解决方案
  17. Unity 中几点注意的地方
  18. 20155319 2016-2017-2 《Java程序设计》第5周学习总结
  19. POJ 3356 水LCS
  20. 在Terminal中的光标的使用技巧

热门文章

  1. Hexo+Github博客最简教程-Dockerfile自动搭建
  2. javascript条件语句
  3. Mysql将查询结果合并为一列
  4. 《深入理解java虚拟机》读书笔记——垃圾收集与内存分配策略
  5. [python]global与nonlocal关键字
  6. samba实现CentOS和window上的数据同步
  7. qt学习001之运行对话框
  8. ORM项目中小知识点积累
  9. 剑指offer——栈的压入、弹出序列
  10. Linux安装Intel Threading Building Blocks(TBB)