Fixed a bug with filenames with non-ascii chars
This commit is contained in:
@@ -24,7 +24,10 @@ class FileHandler(bbctrl.APIHandler):
|
|||||||
|
|
||||||
filename = self.request.path.split('/')[-1]
|
filename = self.request.path.split('/')[-1]
|
||||||
self.uploadFilename = url_unescape(filename) \
|
self.uploadFilename = url_unescape(filename) \
|
||||||
.replace('\\', '/') \
|
.encode("ascii", errors="replace") \
|
||||||
|
.decode() \
|
||||||
|
.replace('\\', '_') \
|
||||||
|
.replace('/', '_') \
|
||||||
.replace('#', '-') \
|
.replace('#', '-') \
|
||||||
.replace('?', '-')
|
.replace('?', '-')
|
||||||
|
|
||||||
@@ -53,7 +56,7 @@ class FileHandler(bbctrl.APIHandler):
|
|||||||
if not os.path.exists(self.get_upload()):
|
if not os.path.exists(self.get_upload()):
|
||||||
os.mkdir(self.get_upload())
|
os.mkdir(self.get_upload())
|
||||||
|
|
||||||
filename = self.get_upload(self.uploadFilename).encode('utf8')
|
filename = self.get_upload(self.uploadFilename)
|
||||||
safe_remove(filename)
|
safe_remove(filename)
|
||||||
os.link(self.uploadFile.name, filename)
|
os.link(self.uploadFile.name, filename)
|
||||||
|
|
||||||
@@ -72,10 +75,11 @@ class FileHandler(bbctrl.APIHandler):
|
|||||||
def get(self, filename):
|
def get(self, filename):
|
||||||
if not filename:
|
if not filename:
|
||||||
raise HTTPError(400, 'Missing filename')
|
raise HTTPError(400, 'Missing filename')
|
||||||
filename = os.path.basename(filename)
|
|
||||||
|
filename = os.path.basename(url_unescape(filename))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(self.get_upload(filename).encode('utf8'), 'r') as f:
|
with open(self.get_upload(filename), 'r') as f:
|
||||||
self.write(f.read())
|
self.write(f.read())
|
||||||
except Exception:
|
except Exception:
|
||||||
self.get_ctrl().state.select_file('')
|
self.get_ctrl().state.select_file('')
|
||||||
|
|||||||
Reference in New Issue
Block a user