【问题标题】:Validate an uploaded file for size and viruses验证上传文件的大小和病毒
【发布时间】:2026-01-04 19:10:01
【问题描述】:

我想方便用户在我的 WordPress 博客上从前端上传个人资料图片。我找到了一个插件“广告本地头像”,它可以帮助我(直到现在我还没有尝试过)。

但我担心如果用户上传了一个非常大的文件或感染了病毒的文件会发生什么。如何在 WordPress(或 PHP)中进行以下操作:

  1. 在将文件保存到服务器之前检查文件大小。 (上传时检查文件大小)
  2. 扫描文件内容

【问题讨论】:

    标签: php wordpress file-upload virus-scanning


    【解决方案1】:
    1. 在将文件保存到服务器之前检查文件大小。 (上传时检查文件大小)

    PHP 在解码 POST 请求时检查最大文件大小。它在 php.ini 中设置为upload_max_filesize。它通常在 10MB 左右。

    但您可以通过简单的测试轻松设置特定于应用程序的最大文件大小:

    if ($_FILES["image"]["size"] >= 500000) {
    

    然后做出相应的反应并打印错误消息。对于个人资料图片和头像,500K 应该绰绰有余。

    1. 扫描文件内容

    然后您需要在服务器上安装病毒扫描程序。有各种可用。由于它是开源的,许多 Unix/Linux 服务器可能有clamav。它可以像这样从 PHP 中使用:

    exec("clamscan '$filename'", $output, $result);
    
    if ($result === 0) {
         // everything ok
    }
    

    $result 的输出状态将是 1 用于病毒或2 用于其他错误。

    【讨论】: