Где хороший пример кода для загрузки фотографий на PHP? - PullRequest
0 голосов
/ 06 октября 2009

Никто, похоже, не связал весь пример кода в различных вопросах StackOverflow в хороший, хорошо составленный пример того, как обрабатывать загрузку фотографий. Вот мое начало ... пожалуйста, помогите улучшить его.

Вот наша установка:

  • Наш элемент управления загрузкой файлов называется $file, например. <input type="file" name="<?= $file ?>" />.
  • Мы хотим сохранить фотографию в $photosPath, например. $photosPath = "/photos/".
  • Мы хотим, чтобы имя файла было $targetFilename . ".jpg", где, например, $targetFilename может быть из текстового поля с именем пользователя в нашей форме загрузки.
  • Мы хотим сохранить полученный путь к файлу в $filePath, например, для вставки в базу данных.
  • Мы хотим принимать только .jpgs.
  • Мы хотим принимать только файлы размером не более $maxSize байтов.

1 Ответ

0 голосов
/ 06 октября 2009

Вот мой выстрел в это:

// 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...