在Flask中验证并保存ZIP文件

时间:2016-09-22 21:38:56

标签: python-3.x flask zip

我正在使用Flask编写应用程序,我想要的其中一项内容是能够上传符合特定表单的ZIP;因此,我有一个小函数,从表单中获取FileStorage对象,首先解压缩它,检查内容,然后尝试保存。但是有一个问题 - 显然解压缩它会“破坏”FileStorage对象,如下所示:

def upload_modfile(modfile):
    if not modfile.filename.endswith('.zip'):
        raise ModError('Incorrect filename')
    mod_path = join(get_mods_path(), secure_filename(modfile.filename))
    if isfile(mod_path):
        raise ModError('File ' + modfile.filename + ' already exists')
    modzip = ZipFile(modfile)
    base_filename = modfile.filename[:-4]
    modzip_contents = modzip.namelist()
    if join(base_filename, 'info.json') not in modzip_contents:
        raise ModError('Could not validate file')
    modfile.save(mod_path)
    return True

modfile保存为Archive: <filename>.zip的文本文件。如果我注释掉整个ZipFile位(即涉及modzip的所有内容),则文件保存得很好。

我几乎是Python的新手,对于在这种情况下该做什么感到有点困惑,除了在/tmp中保存文件。我应该以某种方式克隆modfile吗?有没有办法在FileStorage内“重绕”我指向的流指针?

0 个答案:

没有答案