python 上传文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 上传文件相关的知识,希望对你有一定的参考价值。

上周产品给我提了个需求,大体是做一个后台系统,管理游戏比赛落地页的数据更新,难点在于需要给CDN上传文件。现在把经验记录下来,下次有类似的需求能提高开发效率。

我使用的是网宿CDN,没有用网宿的SDK,直接python封装表单上传文件。

使用post 上传文件需要封装HTTP 消息头:

Content-Type:multipart/form-data; boundary=<boundary>  # boundary 是分隔符,表示使用<boundary>作为body体分割符
Accept: */*
Content-Length: XXXX

--<boundary>    #开始必须使用“--分隔符”作为body体的第一行,需要注意--一定不能丢
Content-Disposition: form-data; name="XXX"
/r/n         # 注意 name跟value之间一定要空一行
XXX_Value      # 表单XXX对应的Value值
Content-Dispositon: form-data; name=‘file‘; filename=‘abc.png‘
Content-Type: image/png
/r/n
“png的二进制数据”
--<boundary>-- #body体结束标记
/r/n



LIMIT = ----------lImIt_of_THE_fIle_eW_$
CRLF = \r\n
L = []
for (key, value) in fields:
L.append(-- + LIMIT)
L.append(Content-Disposition: form-data; name="%s" % key)
L.append(‘‘)
L.append(value)
for (key, filename, value) in files:
L.append(-- + LIMIT)
L.append(Content-Disposition: form-data; name="%s"; filename="%s" % (key, filename))
L.append(Content-Type: %s % get_content_type(filename))
L.append(‘‘)
L.append(value)
L.append(-- + LIMIT + --)
L.append(‘‘)
body = CRLF.join(L)

 


















以上是关于python 上传文件的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

python常用代码片段总结

我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?

常用python日期日志获取内容循环的代码片段

将存储在内存中的文件上传到s3

使用 Python 代码片段编写 LaTeX 文档