如何通过api上传文件

时间:2013-08-29 09:17:52

标签: python api rest upload robotframework

我正在尝试自动执行将csv文档上传到文件存储网站的操作。

我正在尝试将此测试作为后端API测试。

我将文件存储在我的目录中,我希望将其作为参数与json端点一起发送。

我目前正在使用python函数并在机器人框架中进行主要测试。

任何人都可以帮助我吗?

def uploadFileContent(self,filename):
    path = self.makeurl("XXX.json")
    name = self.uploads_path+filename
    sys.stderr.write('\n> Filename: ' + name + '\n')    

    files = {filename: open(name, 'rb'), "name": "bulk_users_csv"}
    response = requests.post(path, files = files, cookies=self.cookies)
    print response.text
    self.status_code_should_be(201)
    return response

1 个答案:

答案 0 :(得分:0)

查看请求库的文档,看起来您正在为请求发送错误的格式。这可以解释"没有被认为是正确的格式"你在问题的评论中提到的错误。

发布multipart-encoded file的文档显示了以下示例:

files = {'file': open('report.xls', 'rb')}
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}

您正在使用"文件名" key和a" name"关键,似乎都不支持。

可以 send arbitrary key/value pairs,但如果这是您尝试做的事情,则您无法发送打开的文件句柄作为数据。