File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44import os
55from util .misc import *
66from util .filenameGenerator import filenameGenerator
7-
7+ import util . extensionSolver
88
99app = FastAPI ()
1010app .mount (configuration .IMAGE_DIR , StaticFiles (directory = configuration .UPLOAD_PATH ), name = configuration .IMAGE_DIR )
@@ -16,11 +16,19 @@ async def index():
1616
1717@app .post ("/upload" )
1818async def upload (file : UploadFile = File (...), authorized = Depends (checkCredentials )):
19+ if len (file .filename .split ('.' )) == 1 : # Guess the extension if there is none
20+ _file = await file .read ()
21+ guessExt = util .extensionSolver .guessFileExtension (_file )
22+ guessMime = util .extensionSolver .guessMime (_file )
23+ file .content_type = guessMime
24+ file .filename = file .filename + guessExt
25+ await file .seek (0 ) # Seek back, otherwise upload will fail
1926 if file .content_type not in configuration .ALLOWED_CONTENT :
20- return {"message " : configuration .ERROR_UNALLOWED_CONTENT }
27+ return {"error " : configuration .ERROR_UNALLOWED_CONTENT }
2128 if authorized :
2229 if configuration .RANDOMIZED_FILENAMES :
2330 _extension = file .filename .split ('.' )[1 ].lower () # Save the extension of the file for upload
31+ print (_extension )
2432 file .filename = filenameGenerator .generateName (5 ) + f".{ _extension } "
2533 await uploadFile (file )
2634 return {"url" : configuration .BASE_URL + configuration .IMAGE_DIR + file .filename }
Original file line number Diff line number Diff line change 11fastapi
22python-multipart
3- uvicorn
3+ uvicorn
4+ python-magic
Original file line number Diff line number Diff line change 1+ import magic
2+ import mimetypes
3+
4+ def guessMime (file ) -> str :
5+ return magic .from_buffer (file , mime = True )
6+
7+ def guessFileExtension (file ) -> str :
8+ mime = guessMime (file )
9+ return mimetypes .guess_extension (mime )
10+
You can’t perform that action at this time.
0 commit comments