Flask 中如何获取文件上传?

推荐答案

在 Flask 中获取文件上传可以通过 request.files 对象来实现。以下是一个简单的示例代码:

-- -------------------- ---- -------
---- ----- ------ ------ -------

--- - ---------------

--------------------- -----------------
--- --------------
    -- ------ --- -- --------------
        ------ --- ---- ---- -- --- --------- ---

    ---- - ---------------------

    -- ------------- -- ---
        ------ --- -------- ------ ---

    - ---------
    -------------------------- - --------------
    ------ ----- -------- -------------- ---

-- -------- -- -----------
    -------------------

在这个示例中,request.files 是一个字典,包含了所有上传的文件。通过 request.files['file'] 可以获取到上传的文件对象,然后可以使用 file.save() 方法将文件保存到指定路径。

本题详细解读

1. request.files 对象

request.files 是 Flask 提供的一个字典对象,用于处理客户端上传的文件。每个文件都是一个 FileStorage 对象,可以通过键名来访问。例如,如果表单中有一个 <input type="file" name="file">,那么可以通过 request.files['file'] 来获取这个文件。

2. 文件上传的验证

在处理文件上传时,通常需要进行一些验证:

  • 检查文件是否存在:通过 if 'file' not in request.files 来判断是否有文件上传。
  • 检查文件名是否为空:通过 if file.filename == '' 来判断用户是否选择了文件。

3. 保存文件

获取到文件对象后,可以使用 file.save() 方法将文件保存到服务器的指定路径。file.filename 是客户端上传的文件名,可以根据需要修改保存路径和文件名。

4. 安全性考虑

在实际应用中,处理文件上传时还需要考虑安全性问题,例如:

  • 文件类型验证:确保上传的文件类型是允许的,避免上传恶意文件。
  • 文件大小限制:限制上传文件的大小,避免服务器资源被耗尽。
  • 文件名处理:避免文件名中包含特殊字符或路径遍历攻击。

通过以上步骤,可以在 Flask 中安全地处理文件上传。

纠错
反馈