如何使用 aiohttp 进行基于 multipartform-data 的异步文件上传?
- 内容介绍
- 文章标签
- 相关推荐
本文共计413个文字,预计阅读时间需要2分钟。
前言:文件上传接口,POST请求,请求参数类型content-type: multipart/form-data,上传文件分为两种情况:小文件上传,可以直接使用open函数读取;大文件上传,可以使用aiohttp支持多种类型的文件以及流媒体格式的上传。
前言
文件上传接口,post 请求参数类型content-type:multipart/form-data,上传文件分2种情况
- 小文件上传,可以直接用open函数读取
- 大文件上传,aio127.0.0.1:8000') as session:
files = {
'file': open('a.jpg', 'rb'),
'title': '文件上传'
}
async with session.post('/api/v1/upfile/', data=files) as resp:
print(resp.url)
print(await resp.text())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())运行结果
127.0.0.1:8000/api/v1/upfile/
{"code":0,"msg":"success!","data":{"file":"/media/up_image/a_TEn5GLR.jpg","title":"文件上传","timestamp":"2022-04-21 11:15:28"}}使用 FormData 类
FormData 类自定义文件类型和名称
import aio49.235.92.12:7005') as session:
data = FormData()
data.add_field('file',
open('a.jpg', 'rb'),
filename='a.jpg',
content_type='image/png')
data.add_field('title', '文件上传1')
async with session.post('/api/v1/upfile/', data=data) as resp:
print(resp.url)
print(await resp.text())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())大文件上传
小文件上传可以直接open函数读取,大文件直接读取会非常消耗内容。aiopython.org')
await session.post('httpbin.org/post',
data=resp.content)笔记 Python 3.5 没有对异步生成器的原生支持,使用 async_generator库作为解决方法。
3.1 版后已弃用:aiohttp仍支持aiohttp.streamer装饰器,但不推荐使用此方法,而支持异步生成器,如上所示。
本文共计413个文字,预计阅读时间需要2分钟。
前言:文件上传接口,POST请求,请求参数类型content-type: multipart/form-data,上传文件分为两种情况:小文件上传,可以直接使用open函数读取;大文件上传,可以使用aiohttp支持多种类型的文件以及流媒体格式的上传。
前言
文件上传接口,post 请求参数类型content-type:multipart/form-data,上传文件分2种情况
- 小文件上传,可以直接用open函数读取
- 大文件上传,aio127.0.0.1:8000') as session:
files = {
'file': open('a.jpg', 'rb'),
'title': '文件上传'
}
async with session.post('/api/v1/upfile/', data=files) as resp:
print(resp.url)
print(await resp.text())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())运行结果
127.0.0.1:8000/api/v1/upfile/
{"code":0,"msg":"success!","data":{"file":"/media/up_image/a_TEn5GLR.jpg","title":"文件上传","timestamp":"2022-04-21 11:15:28"}}使用 FormData 类
FormData 类自定义文件类型和名称
import aio49.235.92.12:7005') as session:
data = FormData()
data.add_field('file',
open('a.jpg', 'rb'),
filename='a.jpg',
content_type='image/png')
data.add_field('title', '文件上传1')
async with session.post('/api/v1/upfile/', data=data) as resp:
print(resp.url)
print(await resp.text())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())大文件上传
小文件上传可以直接open函数读取,大文件直接读取会非常消耗内容。aiopython.org')
await session.post('httpbin.org/post',
data=resp.content)笔记 Python 3.5 没有对异步生成器的原生支持,使用 async_generator库作为解决方法。
3.1 版后已弃用:aiohttp仍支持aiohttp.streamer装饰器,但不推荐使用此方法,而支持异步生成器,如上所示。

