用于将文件上载到REST URL的Python 3脚本(多部分请求)

Ani*_*niJ 5 python rest multipart python-3.x

我是Python新手并使用Python 3.2.我正在尝试编写一个python脚本,它将从用户机器(例如图像文件)中选择一个文件,并使用基于REST的调用将其提交给服务器.Python脚本应该调用REST URL并在调用脚本时提交文件.

这类似于上传文件时浏览器完成的多部分POST; 但在这里我想通过Python脚本来做.

如果可能的话,不想在Python中添加任何外部库,并希望使用核心Python安装保持相当简单的python脚本.

有人可以指导我吗?或者分享一些实现我想要的脚本示例?

Jes*_*ose 10

请求库是您所需要的.你可以安装pip install requests.

http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file

>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('report.xls', 'rb')}
>>> r = requests.post(url, files=files)
Run Code Online (Sandbox Code Playgroud)

  • 请求现在支持Python 3. (2认同)

jfs*_*jfs 5

PUT如果您知道图像 url 是什么,则上传图像的 RESTful 方法是使用request:

#!/usr/bin/env python3
import http.client 

h = http.client.HTTPConnection('example.com')
h.request('PUT', '/file/pic.jpg', open('pic.jpg', 'rb'))
print(h.getresponse().read())
Run Code Online (Sandbox Code Playgroud)

upload_docs.py包含一个如何使用基本 http 身份验证上传文件的示例multipart/form-data。它支持 Python 2.x 和 Python 3。

您还可以使用requests以下方式发布文件multipart/form-data

#!/usr/bin/env python3
import requests

response = requests.post('http://httpbin.org/post',
                         files={'file': open('filename','rb')})
print(response.content)
Run Code Online (Sandbox Code Playgroud)

  • Requests 现在支持 Python 3。 (2认同)