1

有没有一种简单的方法可以使用 Python 上传单个文件?
我知道requests,但它会发布一个包含单个文件的文件字典,因此我们在另一端接收该文件时遇到了一点问题。

目前发送该文件的代码是:

def sendFileToWebService(filename, subpage):
    error = None
    files = {'file': open(filename, 'rb')}
    try:
        response = requests.post(WEBSERVICE_IP + subpage, files=files)
        data = json.load(response)
(...)

问题是requests发送每个文件

--7163947ad8b44c91adaddbd22414aff8
Content-Disposition: form-data; name="file"; filename="filename.txt"
Content-Type: text/plain


<beggining of file content>
(...)
<end of file content>
--7163947ad8b44c91adaddbd22414aff8--

我想这是一个文件包。有没有办法发送文件“清除”?

4

1 回答 1

3

使用data参数来请求,而不是files参数:

def sendFileToWebService(filename, subpage):
    error = None
    try:
        response = requests.post(WEBSERVICE_IP + subpage,
                                 data=open(filename, 'rb'))
        data = json.load(response)
(...)

这将导致文件的内容被放置在 HTTP 请求的正文中。指定files参数会触发切换到 的请求multipart/form-data

于 2013-06-11T23:59:33.353 回答