Python 帮助改进我的文件上载方法(金字塔框架)

Python 帮助改进我的文件上载方法(金字塔框架),python,pylons,multipart,pyramid,Python,Pylons,Multipart,Pyramid,目前,我使用以下方法在金字塔中上传文件(通过HTML表单) if request.params.get('form.submitted'): upload_directory = os.getcwd() + '/myapp/static/uploads/' my_file = request.POST.get('thumbnail') saved_file = str(upload_directory) + str(my_file.filename) per

目前,我使用以下方法在金字塔中上传文件(通过HTML表单)

if request.params.get('form.submitted'):

    upload_directory = os.getcwd() + '/myapp/static/uploads/'

    my_file = request.POST.get('thumbnail')
    saved_file = str(upload_directory) + str(my_file.filename)

    perm_file = open(saved_file, 'w')

    shutil.copyfileobj(my_file.file, perm_file)
    my_file.file.close()
    perm_file.close()

我只是想知道,这是保存上传文件的好方法吗?我的方法是否存在安全问题?我还可以如何改进我的方法。谢谢。

您需要使用类似于werkzug的东西,而不仅仅是将上载目录添加到给定的文件名中。攻击者可以创建一篇文件名为
。/../../some/important/path
的帖子,并导致此脚本覆盖
上载\u目录之外的某个文件

如何处理大型文件?我认为对于大文件,您必须分块编写。我要试试你的方法,谢谢!嗨,目前我还没有在大文件上尝试过。主要是在meg下的文件上。但是,如果您在较大的文件上尝试此操作,请务必报告,并让我知道它的运行情况,谢谢。请使用os.path.join();比字符串串联更好。