aiohttp 上传文件的几种方式
编辑
62
2023-10-31
从本地文件上传
import asyncio
from aiohttp import ClientSession
from aiohttp.formdata import FormData
async def upload(file_path, file_name):
async with ClientSession() as session:
data = FormData()
data.add_field(
'file',
Path(res_path).open(mode="rb"),
filename=file_name
)
url = f''
async with session.post( url, data=data) as resp:
assert resp.status == 200
asyncio.run(upload(f'./test.jpeg', 'test.jpg'))
从文件流上传
这种方式不需要把文件保存到本地,采用流的方式进行传输。
import asyncio
from aiohttp import ClientSession
from aiohttp.formdata import FormData
async def upload_stream(res_url, url, file_name):
async with ClientSession() as session:
async with session.get(res_url) as r:
data = FormData()
data.add_field('file', r.content, filename=filename)
async with session.post(url, data=data) as resp:
assert resp.status == 200
asyncio.run(upload_stream(f'<res_url>', f'<upload_url>', 'test.jpg'))
Enjoy!
- 0
- 0
-
分享