Beispiel #1
0
 async def wrapped(self, **kwargs):
     file_ids = list()
     try:
         async for part in await self.request.multipart():
             if not part.filename:
                 kwargs[part.name] = (await part.read()).decode()
             else:
                 grid_in = await fs.add(self.get_content_type(part.filename)
                                        )
                 try:
                     chunk = await part.read_chunk()
                     while chunk:
                         _, chunk = await asyncio.gather(
                             grid_in.write(chunk), part.read_chunk())
                     await grid_in.close()
                 except:
                     await grid_in.abort()
                     raise
                 file_id = await fs.link_by_md5(grid_in.md5, grid_in._id)
                 if file_id:
                     await fs.unlink(grid_in._id)
                 else:
                     file_id = grid_in._id
                 file_ids.append(file_id)
                 kwargs[part.name] = file_id
         return await coro(self, **kwargs)
     except:
         await asyncio.gather(*[fs.unlink(file_id) for file_id in file_ids])
         # TODO(iceboy): call self.response.force_close() after aiohttp supports it.
         raise
Beispiel #2
0
Datei: base.py Projekt: vijos/vj4
 async def wrapped(self, **kwargs):
   file_ids = list()
   try:
     async for part in await self.request.multipart():
       if not part.filename:
         kwargs[part.name] = (await part.read()).decode()
       else:
         grid_in = await fs.add(self.get_content_type(part.filename))
         try:
           chunk = await part.read_chunk()
           while chunk:
             _, chunk = await asyncio.gather(grid_in.write(chunk), part.read_chunk())
           await grid_in.close()
         except:
           await grid_in.abort()
           raise
         file_id = await fs.link_by_md5(grid_in.md5, grid_in._id)
         if file_id:
           await fs.unlink(grid_in._id)
         else:
           file_id = grid_in._id
         file_ids.append(file_id)
         kwargs[part.name] = file_id
     return await coro(self, **kwargs)
   except:
     await asyncio.gather(*[fs.unlink(file_id) for file_id in file_ids])
     # TODO(iceboy): call self.response.force_close() after aiohttp supports it.
     raise