PHP照片上传的一些好示例代码在哪里?

时间:2009-10-06 00:08:47

标签: php file-upload

似乎没有人将各种StackOverflow问题中的所有示例代码绑定到一个如何处理照片上传的良好,精心整理的示例中。这是我的开始......请帮助改进它。

这是我们的设置:

  • 我们的文件上传控件名为$file,例如<input type="file" name="<?= $file ?>" />
  • 我们要将照片保存到$photosPath,例如$photosPath = "/photos/"
  • 我们希望文件名为$targetFilename . ".jpg",例如$targetFilename可以来自我们上传表单中的用户名文本字段。
  • 我们希望将生成的文件路径存储在$filePath中,例如用于插入数据库。
  • 我们只想接受.jpgs。
  • 我们只想接受最多$maxSize字节的文件。

1 个答案:

答案 0 :(得分:0)

以下是我拍摄的照片:

// Given: $file, $targetFilename, $photosPath, $maxSize
$filePath = NULL;
if (array_key_exists($_FILES, $file)
    && $_FILES[$file]['size'] != 0
    && $_FILES[$file]['error'] == UPLOAD_ERR_OK)
{
    if ($_FILES[$file]['size'] > $maxSize)
    {
        throw new Exception("The uploaded photo was too large; the maximum size is $maxSize bytes.");
    }

    $imageData = getimagesize($_FILES[$file]['tmp_name']);
    $extension = image_type_to_extension($imageData[2]);
    if ($extension != ".jpg" && $extension != ".jpeg")
    {
        throw new Exception("Only .jpg photos are allowed.");
    }

    $possibleFilePath = $photosPath . $targetFilename . ".jpg";
    if (!move_uploaded_file($_FILES[$file]['tmp_name'],
                            $_SERVER['DOCUMENT_ROOT'] . $possibleFilePath)
    {
        throw new Exception("Could not save the uploaded photo to the server.");
    }

    $filePath = $possibleFilePath;
}