werkzeug.utilsnosecure_filenameで2バイト文字が全て消えて謎のファイルが生成される
XXXalice opened this issue · 1 comments
XXXalice commented
日本語ファイルはランダム文字列でその場で命名してuploadする
XXXalice commented
なおった
def __jis_check(self, fname):
"""
fnameに2バイト文字が含まれているならtrue、英数字オンリーならfalse
:param fname: string
:return: bool
"""
codex = ['shift_jis', 'utf-8']
code_dict = dict(zip(codex, [None for _ in codex]))
for code in list(code_dict.keys()):
code_dict[code] = len(fname.encode(encoding=code, errors='replace'))
tmp = 0
res = False
for byte_num in list(code_dict.values()):
if tmp != 0:
if tmp == byte_num:
continue
else:
res = True
tmp = byte_num
return res
こんなん
str.encode()のerrors引数は強い
'ignore'では動かなかった