场景是在nginx+uwsgi+flask时上传文件名为中文时nginx报502错,设置各各地方为utf8后无果,最后妥协了. 解决方案一:拼接+安全检查nginx
def rsafename(s): """Ensure user submited string not contains '/' or muti '-'. Args: s: submited string Returns: replaced slash string """ s = re.sub('[" "\/\--.]+', '-', s) s = re.sub(r':-', ':', s) s = re.sub(r'^-|-$', '', s) return s
解决方案2: 转成拼音 pip install pypinyinflask
from pypinyin import pinyin, lazy_pinyin filesname = "".join(lazy_pinyin(files.filename))