我需要从 wtforms 获取一个二进制文件并将其作为 bytea 存储在 postgresql 中。而且我不需要将它作为文件永久存储。根据我对 Flask offical doc 的理解我将能够通过 request.files.['myfile'].filename 或 secure_filename(f.filename) 访问文件名。但是,它们都给我一个错误:IOError: [Errno 2] No such file or directory: u'myuploadpdf.pdf'
f = request.files.['myfile']:
if f and allowed_file(f.filename):
#filename = secure_filename(f.filename)
data = open(f.filename, 'rb').read()
#data = open(filename , 'rb').read()
binary = psycopg2.Binary(data)
请您参考如下方法:
open() 需要文件的路径名。由于文件尚未保存到磁盘,因此不存在这样的路径。 :)
您真正想要做的是直接调用f.read()。涵盖读取传入文件 here .
此外,如果您使用磁盘上的任何内容,一定要使用 secure_filename()。不想让自己面临任何目录遍历攻击。
