【发布时间】:2021-07-28 01:40:49
【问题描述】:
我有一个网页,它在一个表单中提交两个输入。我的浏览器的 POST 如下所示。
第一个输入是当前上传到站点的文件的路径(type="hidden");第二个输入是要上传的新文件(type="file")。
-----------------------------334620328614915644833547167693
Content-Disposition: form-data; name="image1"
data/file.jpg
-----------------------------334620328614915644833547167693
Content-Disposition: form-data; name="image1"; filename=""
Content-Type: application/octet-stream
这些输入具有相同的名称但类型不同,这导致我对requests 库的理解出现问题。据我所知,要提交数据,您需要发布一个包含输入名称及其新值的字典。
data = {}
form = get_all_forms(url)[1] #function returns list of forms gained using requests.get() - we select the correct form
formDetails = get_form_details(form) #uses BeautifulSoup to find all input values
for inputTag in formDetails["inputs"]:
if inputTag["type"] == "file":
pass #doesn't send anything
else:
data[inputTag["name"]] = inputTag["value"] #sets to current value
res = requests.post(url, data=data)
以上代码将发布带有'image1':'data/file.jpg' 的字典。不幸的是,页面现在认为有一个名为data/file.jpg 的新文件正在上传,当找不到该文件时,它会删除当前图像。
如何为 type="file" 和 type="hidden" 发布单独的值?
【问题讨论】:
标签: python post python-requests