我正在尝试制作一个将文件上传到文件夹的python脚本 . 一切都工作正常,除了我尝试保存一个日文文本名称的文件,它被切断了 . 它像somefile__.zip一样,下划线是日文文本的位置 . 在文件的顶部我设置编码:utf-8但这没有任何影响 . 这是安全文件名功能的问题还是我错过了什么?我的文件管理器可以在名称中显示带有日文字符的文件,所以这不是问题 .
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
if is_image(file.filename):
filename = shortuuid.uuid()[:7] + "." + file.filename.rsplit(".", 1)[1]
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
else:
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
1 回答
如果没有更多信息,我无法确定这是对的,我会将此作为评论,但我还没有足够的代表 .
我认为你的问题是
secure_filename
功能 . 我真的意识到这是一个Django问题 . 我搜索了secure_filename,发现它来自Werkzeug . 在documentation中,它表示secure_filename
函数返回仅ASCII字符串 . 这可能是你的问题 .如果删除该功能,则可以检查它是否有效 .
如果您确实需要使文件名安全,则可能必须编写自己的代码才能执行此操作或查找其他要使用的库 .
它也可能是函数返回一个空文件名,所以你可以使用它,但你有责任检查并处理它 .