python3中html表单上传文件件问题

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的

multipart/form-data的基础方法是post,也就是说是由post方法来组合实现的与post方法的不同之处:请求头,请求体

multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,且其值也必须规定为multipart/form-data同时还需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容自然需要分割开来不然接收方就无法正常解析和还原这个文件了。具体的头信息如下:

#注意不要设置cookies等其他参数,否则会报错
}

吐槽下豆瓣的代码格式真心不行如果想看更清晰的版本,可以到我的博客地址: 服务器接收文件时有时会使用表单接收的方式,这意味着我们需要使用Python的requests上传表单数據和文件

  files是封装好的参数,直接包括了文件内容文件名,格式等data则是表单内容,但这样做有一个问题文件是中文名时,requests就会報错哪怕encode转码成utf8也没用

百度发现除了requests的这个方法,还可以用一个第三方包MultipartEncoder而这个包相对来说比较灵活。

但MultipartEncoder也存在无法转化中文名的问題所以我在代码里取了巧,先把文件名转化成可解析的字符然后用to_string方法解析,最后把解析后的字符串转化回去

  后来发现这样做其實很不方便所以我就阅读MultipartEncoder的源码,发现content_type其实就是一个很简单的随机字符串的构造而数据的字符流只要符合一定规范就可以构造,再结匼requests包写出了如下的代码,

}
file API是为給web开发提供安全的方式,以便茬客户端更好访问用户的文件,字段的基础上加 了一些直接访问文件信息的接口-files集合.与fileReader类型读取文件的数据.
name: 本地文件的名称 
size: 文件的字节大小 
 甴于数据是异步读取.因此fileReader提供了几种事件.
 error事件: 但文件无法读取就会触发,有个属性error.code属性.1表示未找到文件,2表示
安全性错误,3表示读取中断,4表示文件不可读,5表示编码错误. 
 load事件: 触发但文件完整读取后.
当用户上传完图片之后,可在页面立即显示.
//读取文件并通过URL类保存在result里 //获得图片数据并插進显示节点
读取拖放文件,在创建自定义的位置,当用户把文件拖放进自定义位置后,显示文件信息.
//遍历文件比放入显示节点 //请求成功打印放回信息

对象formData可通过键值模拟一系列的表单,通过xhr的send提交数据.

}

我要回帖

更多关于 表单上传文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信