python做文件上传最容易犯的4个错误

编辑:光环大数据 来源: 互联网 时间: 2017-10-31 14:48 阅读:

  做文件上传最容易犯的4个错误,文件上传是后台开发不可能避免的一个功能.文件上传,固有一做,早做晚做都得做.但是对于初学者来说,文件上传的坑稍微有点儿多,经常让第一次做的人感到寸步难行.这里我们总结做文件上传功能最容易犯的几个错误:

1.form表单没有设置属性enctype="multipart/form-data".

我们写不包含文件功能的表单的时候,通常是不设置enctype的,这时它是默认值"application/x-www-form-urlencoded".

在我们不设置enctype,只设置method="POST"的时候,实际上HTTP请求的报文大概是长下面这个样子的.这里没有包含请求头:

当我们将enctype设置为"multipart/form-data"时,HTTP的报文大概是类似于这样的

大家注意Content-type的值的后半部分boundary=---------------------------7da3d81520810,定义了一个分界线.后面部分的报文被这个分割线分割成几个部分,每个部分是一个文件的内容.这就是HTTP上传文件的秘密.所以,记住,上传文件时form表单要设置enctype属性.

2.csrf报错.

Django对于POST要求验证防止跨站攻击(CrossSiteRequestForgery,简称csrf),为了支持这种验证我们需要做两个改动,在后端,记住这段代码

记住,一定要给render_to_response方法带上context_instance变量,这个变量包含防止跨站攻击所需要的信息.RequestContext(request),是从请求中构建Django各个模块所需的变量.

在前端,我们要在form表单中注入一些标签,像这样:

注意那个csrf_token,这个标签把刚刚我们从后端render出来的,context_instance中有关csrf的信息以合适的形式注入到页面中.对页面的外观实际上不会有任何的影响,因为注入进来的都是隐藏元素.

3.文件输入框没有命名.

在表单form中,input[type=file]需要有name属性,否则在后端无法取出这个文件.代码上的对应关系如下:

4.表单form中没有提交按钮.

在form的开闭标签之间,至少要有一个input[type=submit]或者button,没有提交按钮表单是不能提交的!!!(其实用js可以实现提交,这里只考虑Html提交的情况)

 

  Python培训Python培训班Python培训机构,就选光环大数据!

  还不够过瘾?想学习更多?点击 http://hadoop.aura.cn/python/ 进行Python学习!


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();