【问题标题】:How to upload file through the api如何通过api上传文件
【发布时间】:2013-09-01 15:27:46
【问题描述】:

我正在尝试自动执行将 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

【问题讨论】:

  • 您要上传到哪个网站?您能否举例说明“将其作为参数与 json 端点一起发送”是什么意思?
  • 详细说明您的要求 .. 尝试解释要点 .. 并且从您需要 jsonp 而不是 json 的 JavaScript 进行 api 调用
  • 我正在使用上面的函数但是文件没有被识别为正确的格式

标签: python api rest upload robotframework


【解决方案1】:

查看请求库的文档,您似乎发送的请求格式错误。这可以解释您在问题的 cmets 中提到的“不被识别为正确的格式”错误。

发布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')}

您正在使用“文件名”键和“名称”键,似乎都不支持这两者。

可以send arbitrary key/value pairs,但如果这是你想要做的,你不能发送一个打开的文件句柄作为数据。

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 2021-07-22
    • 2018-10-10
    • 1970-01-01
    • 2011-10-18
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多