aiohttp formdata 上传文件
时间: 2023-08-04 15:09:48 浏览: 255
好的,关于 aiohttp 的 FormData 文件上传,可以参考以下示例代码:
```python
import aiohttp
import asyncio
async def upload_file(url, file_path):
async with aiohttp.ClientSession() as session:
data = aiohttp.FormData()
with open(file_path, 'rb') as f:
data.add_field('file', f.read(), filename='file_name')
async with session.post(url, data=data) as resp:
response_text = await resp.text()
print(response_text)
loop = asyncio.get_event_loop()
url = 'https://www.example.com/api/upload'
file_path = '/path/to/file'
loop.run_until_complete(upload_file(url, file_path))
```
在示例代码中,我们首先导入 aiohttp 库,然后定义了一个异步函数 `upload_file`,用于实现文件上传。在函数中,我们首先创建了一个 `FormData` 对象,并使用 `add_field` 方法向其中添加了一个 `'file'` 字段,将文件内容作为值传递给该字段,并指定了文件名为 `'file_name'`。
最后,我们使用 `session.post` 方法发送 POST 请求,并将 `FormData` 对象作为请求数据。在请求发送后,我们使用 `await resp.text()` 来获取响应的文本内容,并打印出来。
需要注意的是,在使用 `FormData` 上传文件时,需要使用 `add_field` 方法向其中添加文件字段,并指定文件名。同时,`FormData` 对象也支持添加其他类型的字段,如文本字段等。
希望能够帮助到你!
阅读全文