Python 2.7 Python请求:如何使用文件名正确提交多部分/表单POST

Python 2.7 Python请求:如何使用文件名正确提交多部分/表单POST,python-2.7,curl,python-requests,Python 2.7,Curl,Python Requests,我已经研究了Python中与多部分/表单POST请求相关的其他问题,但不幸的是,它们似乎没有解决我的确切问题。基本上,我通常使用CURL来访问API服务,该服务允许我上传zip文件以创建HTML5资产。我使用的CURL命令如下所示: curl-X POST-H“Authorization:api:222111”--表单“type=html”--表单“file=Folder1/Folder2/example.zip”“” 我正在尝试使用python脚本迭代一个zip文件文件夹,以便上传所有这些文件

我已经研究了Python中与多部分/表单POST请求相关的其他问题,但不幸的是,它们似乎没有解决我的确切问题。基本上,我通常使用CURL来访问API服务,该服务允许我上传zip文件以创建HTML5资产。我使用的CURL命令如下所示:

curl-X POST-H“Authorization:api:222111”--表单“type=html”--表单“file=Folder1/Folder2/example.zip”“”

我正在尝试使用python脚本迭代一个zip文件文件夹,以便上传所有这些文件并收到一个“媒体ID”。这就是我的脚本的样子:

import os
import requests
import json


ins_id = raw_input("Please enter your member ID: ")
auth = raw_input("Please enter your API authorization token: ")

for filename in os.listdir("zips"):
    if filename.endswith(".zip"):
        file_path = os.path.abspath(filename)
        url = "https://example.api.com/upload?
        ins_id="+str(ins_id)
        header = {"Authorization": auth}
        response = requests.post(url, headers=header, files={"form_type": 
        (None, "html"), "form_file_upload": (None, str(file_path))})
        api_response = response.json() 
        print api_response
此API服务要求在提交帖子时包含文件路径。但是,当我使用此脚本时,响应指示“未提供文件”。我是否在脚本中正确包含此信息

谢谢

更新:


我认为我现在正朝着正确的方向前进(感谢提供的答案),但现在,我收到一条错误消息,指出“没有这样的文件或目录”。我的想法是,我没有正确地使用os.path,但即使我将代码更改为使用“relpath”,我仍然会收到相同的消息。我的脚本在一个文件夹中,我有一个完全不同的文件夹,名为“zips”(在同一目录中),它是存储我所有zip文件的地方。

要使用
请求
库上载文件,您可以将文件处理程序直接包含在JSON中,如中所述。这是我从中得到的相应示例:

url = 'http://httpbin.org/post'
files = {'file': open('path_to_your_file', 'rb')}

r = requests.post(url, files=files)
如果我们将其集成到您的脚本中,它将如下所示(我还使其更具python风格):


因为我没有API端点,所以我不能实际测试这个代码块——但它应该是这样的

要使用
请求
库上载文件,可以直接在JSON中包含文件处理程序,如中所述。这是我从中得到的相应示例:

url = 'http://httpbin.org/post'
files = {'file': open('path_to_your_file', 'rb')}

r = requests.post(url, files=files)
如果我们将其集成到您的脚本中,它将如下所示(我还使其更具python风格):


因为我没有API端点,所以我不能实际测试这个代码块——但它应该是这样的

谢谢,我现在的方向似乎是正确的,但我认为我可能使用os.path不正确,因为我现在收到一条错误消息,指出没有这样的文件或目录。我将在我的原始帖子中包含我的更新,谢谢。问题是文件的路径-它需要包含文件夹。我更新了答案,没错。谢谢谢谢,我现在的方向似乎是正确的,但我认为我可能使用os.path不正确,因为我现在收到一条错误消息,指出没有这样的文件或目录。我将在我的原始帖子中包含我的更新,谢谢。问题是文件的路径-它需要包含文件夹。我更新了答案,没错。谢谢