在Flask中上传时Base64编码文件

时间:2019-01-28 09:00:26

标签: python-3.x flask base64

您是否对烧瓶中的文件有base64编码的想法?

我尝试过...

import base64


@users_blueprint.route('/add-source', methods=['GET', 'POST'])
@ensure_authenticated
@user_authenticated

def add_user_resource():
    file = request.files['file']

    #file = request.files['file'].filename

    with open(file, "rb") as imageFile:
        str = base64.b64encode(imageFile.read())
        print str  
    return str

我遇到错误 #FileNotFoundError:[错误2]没有这样的文件或目录:'Tulips.jpg'

有什么主意吗?预先谢谢你?

https://pastebin.com/nGubkfeY

2 个答案:

答案 0 :(得分:0)

当您打开具有相对文件路径的文件(即简单地传递Tulips.jpg)时,将相对于当前工作目录来计算文件的路径。如果文件不存在,则会出现错误。在您的情况下进行调试的简便方法是,在应用启动时或使用os.getcwd()打开文件之前立即打印当前工作目录,并检查文件是否实际位于/your/working/dir/Tulips.jpg

答案 1 :(得分:0)

无需致电open。 Flask已经为您提供了可读的文件流。

还要注意,b64encode返回bytes而不是str

file = request.files['file']
rv = base64.b64encode(file.read())  # bytes
rv = rv.decode('ascii')  # str
return rv

PS:选择变量名称时,请尽量避免使用str之类的built-in identifiers。可以为您节省一些麻烦。