def test_response_with_bodypart(loop, test_client): @asyncio.coroutine def handler(request): reader = yield from request.multipart() part = yield from reader.next() return web.Response(body=part) app = web.Application(client_max_size=2) app.router.add_post('/', handler) client = yield from test_client(app) data = {'file': io.BytesIO(b'test')} resp = yield from client.post('/', data=data) assert 200 == resp.status body = yield from resp.read() assert body == b'test' disp = multipart.parse_content_disposition( resp.headers['content-disposition']) assert disp == ('attachment', { 'name': 'file', 'filename': 'file', 'filename*': 'file' })
def check_type_and_name(field, name): if not isinstance(field, multipart.BodyPartReader): raise error.ValidationError(name) disptype, parts = multipart.parse_content_disposition( field.headers.get('Content-Disposition')) if disptype != 'form-data' or parts.get('name') != name: raise error.ValidationError(name)
def content_disposition(self) -> Optional[ContentDisposition]: """Get Content-Disposition headers, if any""" raw = self.headers.get(hdrs.CONTENT_DISPOSITION) if raw is None: return None disposition_type, params_dct = multipart.parse_content_disposition(raw) params = MappingProxyType(params_dct) filename = multipart.content_disposition_filename(params) return ContentDisposition(disposition_type, params, filename)
async def test_response_with_bodypart(aiohttp_client): async def handler(request): reader = await request.multipart() part = await reader.next() return web.Response(body=part) app = web.Application(client_max_size=2) app.router.add_post('/', handler) client = await aiohttp_client(app) data = {'file': io.BytesIO(b'test')} resp = await client.post('/', data=data) assert 200 == resp.status body = await resp.read() assert body == b'test' disp = multipart.parse_content_disposition( resp.headers['content-disposition']) assert disp == ('attachment', {'name': 'file', 'filename': 'file', 'filename*': 'file'})
def function268(arg1358, arg2118): @asyncio.coroutine def function146(arg2095): var1318 = yield from arg2095.multipart() var3589 = yield from var1318.next() return web.Response(body=var3589) var4234 = web.Application(client_max_size=2) var4234.router.add_post('/', function146) var4717 = yield from arg2118(var4234) var2516 = { 'file': io.BytesIO(b'test'), } var1618 = yield from var4717.post('/', data=var2516) assert (200 == var1618.status) var3083 = yield from var1618.read() assert (var3083 == b'test') var1466 = multipart.parse_content_disposition( var1618.headers['content-disposition']) assert (var1466 == ('attachment', { 'name': 'file', 'filename': 'file', 'filename*': 'file', }))
def get_part_name(part): _, params = parse_content_disposition(part.headers.get(CONTENT_DISPOSITION)) return params.get("name")