Skip to main content
 首页 » 编程设计

python之无法从 secure_filename(f.filename) 读取文件

2025年05月04日64kerrycode

我需要从 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()。不想让自己面临任何目录遍历攻击。