Flask上传文件时,如果文件名中带有中文字符,可能会出现编码问题。这是因为中文字符在计算机中被编码为多个字节,而上传文件时默认使用的编码是 ASCII 码,不支持中文字符。
要解决这个问题,可以将文件名编码为 URL 编码,即使用%XX代替中文字符的字节码。在Flask中,可以使用urllib.parse.quote()函数将文件名转换为URL编码。示例代码如下:
from flask import Flask, request
import os
import urllib.parse
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
filename = file.filename
filename = urllib.parse.quote(filename)
file.save(os.path.join('/path/to/save', filename))
return 'Upload success'
if __name__ == '__main__':
app.run()
以上代码中,urllib.parse.quote()函数将文件名转换为 URL 编码,file.save()方法保存文件到指定目录下。需要注意的是,保存文件时的文件名也应该使用 URL 编码。
希望这个解答能够帮到您。