aiohttp上传文件为curl -F

时间:2019-02-04 08:04:43

标签: curl file-upload aiohttp

我有一个带有curl -F“ file = / tmp / test.txt”的请求,响应为200,但是我无法在Python中模拟此请求。我尝试过这样的事情

mp = aiohttp.MultipartWriter()
mp.append(open('/tmp/test.txt', 'rb'))
result = await session.post(url, data=mp)

但是它不起作用,服务器响应400。我也尝试过

mp.append_form([('file', open('/tmp/test.txt'))]) 

它也不起作用。用aiohttp模拟curl -F的正确方法是什么?

P.S。我还尝试对mp.append()的结果使用set_content_disposition(),但是它返回None而不是Payload,如此处文档http://docs.aiohttp.org/en/stable/multipart.html#sending-multipart-requests

中所述

1 个答案:

答案 0 :(得分:0)

尝试添加标题:

headers={
    'Content-Length': '{file lendth}'
    'Content-Type': 'multipart/form-data'
}

/////////////////////////////////////////

mp = aiohttp.MultipartWriter()
mp.append(open('/tmp/test.txt', 'rb'))
result = await session.post(url, data=mp, headers=headers)