42 lines
922 B
Python
42 lines
922 B
Python
import os
|
|
import asyncio
|
|
|
|
from aiohttp.web_exceptions import HTTPNotFound
|
|
from aiohttp.web import StreamResponse
|
|
from aiohttp import web
|
|
import aiofile
|
|
|
|
from appPublic.rc4 import RC4
|
|
|
|
crypto_aim = 'God bless USA and others'
|
|
def path_encode(path):
|
|
rc4 = RC4()
|
|
return rc4.encode(path,crypto_aim)
|
|
|
|
def path_decode(dpath):
|
|
rc4 = RC4()
|
|
return rc4.decode(dpath,crypto_aim)
|
|
|
|
async def file_download(request, filepath):
|
|
filename = os.path.basename(filepath)
|
|
if os.path.exists(filepath):
|
|
response = web.StreamResponse(
|
|
status=200,
|
|
reason='OK',
|
|
headers={'Content-Type': 'text/plain',
|
|
'Content-Disposition': 'attrachment;filename={}'.format(filename)
|
|
},
|
|
)
|
|
await response.prepare(request)
|
|
|
|
async with aiofile.AIOFile(filepath, 'rb') as f:
|
|
while True:
|
|
x = await f.read()
|
|
if x is None:
|
|
break
|
|
await response.write(x)
|
|
await response.write_eof()
|
|
return response
|
|
raise HTTPNotFound
|
|
|