diff --git a/src/snek/view/upload.py b/src/snek/view/upload.py
index f9bad33..8884d72 100644
--- a/src/snek/view/upload.py
+++ b/src/snek/view/upload.py
@@ -25,6 +25,7 @@ class UploadView(BaseView):
         drive_item = await self.services.drive_item.get(uid)
         response = web.FileResponse(drive_item["path"])
         response.headers['Cache-Control'] = f'public, max-age={1337*420}'
+        response.headers['Content-Disposition'] = f'attachment; filename="{drive_item["name"]}"'
         return response
 
     async def post(self):
@@ -57,8 +58,10 @@ class UploadView(BaseView):
             filename = field.filename
             if not filename:
                 continue
+            
+            name = str(uuid.uuid4()) + pathlib.Path(filename).suffix
 
-            file_path = pathlib.Path(UPLOAD_DIR).joinpath(filename.strip("/").strip("."))
+            file_path = pathlib.Path(UPLOAD_DIR).joinpath(name)
             files.append(file_path)
 
             async with aiofiles.open(str(file_path.absolute()), 'wb') as f: