【发布时间】:2017-07-23 18:31:59
【问题描述】:
我正在尝试使用 Python 中的 POST 请求(请求库)上传文件。
我收到HTTP 400 error 作为回复。我认为这是因为我的 POST 请求不是应有的格式。任何想法如何将 POST 请求 1 转换为 2?
代码:
files = {"file": ("test-file.txt", open("c:/users/johndoe/desktop/test-file.txt", "rb"), "text/plain")}
response = webdriver.request("POST", "https://something.com/attachments", files = files)
我目前拥有的 (1):
--d9bd23df892242a489b0f638d62502a6
Content-Disposition: form-data; name="file"; filename="test-file.txt"
Content-Type: text/plain
This is a test file.
Regards,
John Doe
--d9bd23df892242a489b0f638d62502a6--
我应该拥有的(2):
-----------------------------26789175756830
Content-Disposition: form-data; name="fileName"
test-file.txt
-----------------------------26789175756830
Content-Disposition: form-data; name="fileSize"
45
-----------------------------26789175756830
Content-Disposition: form-data; name="description"
undefined
-----------------------------26789175756830
Content-Disposition: form-data; name="file"; filename="test-file.txt"
Content-Type: text/plain
This is a test file.
Regards,
John Doe
-----------------------------26789175756830--
我认为我需要补充的(3):
-----------------------------26789175756830
Content-Disposition: form-data; name="fileName"
test-file.txt
-----------------------------26789175756830
Content-Disposition: form-data; name="fileSize"
45
-----------------------------26789175756830
Content-Disposition: form-data; name="description"
undefined
-----------------------------26789175756830
【问题讨论】:
-
是什么让您认为需要指定“fileName”、“fileSize”和“description”字段?
Content-Disposition: form-data; name="file"; filename="test-file.txt"正是浏览器为多部分编码形式的<input>类型文件生成的内容。 -
因为我已经将我的请求与来自网站的请求进行了比较,我发现的唯一区别就是这部分。
-
我认为服务器需要这种格式。你觉得会是这样吗?
-
当然,它可以使用这种格式。我只是想知道你从哪里得到格式。我想也许您使用的网站有一些解释它的文档。
-
@ThisSuitIsBlackNot 不,不幸的是没有,但是知道如何将这部分添加到我的代码中吗?
标签: python file http upload python-requests