как загрузить изображение в директорию хранения в php выдает ошибку "изображение не загружено" - PullRequest
0 голосов
/ 19 ноября 2018

Ошибка при загрузке изображения. ошибка image in not uploaded пожалуйста, помогите мне понять это наше.

class User extends DatabaseConnection{

    public function addNewUser() {
        $db = $this->getConn();

        $add_query = "INSERT into `users`"
                . "(`user_id` , `first_name` , `middle_name` , `last_name` , `user_name` , `email` , `contact_number` , `password` , `gender` , `date_of_birth` , `country` , `city` , `profile_image` , `created_at` , `updated_at`  , `role`)"
                . "VALUES"
                . "('NULL' , '$this->first_name' , '$this->middle_name' , '$this->last_name' , '$this->user_name' , '$this->email' , '$this->contact_number' , '$this->password' , '$this->gender' , '$this->dob' , '$this->country' , '$this->city' , '$this->profile_image' , NOW() ,  NOW() , 'visitor')";

        $db->query($add_query);
        if ($db->errno) {
            throw new Exception($db->error);


            $storage_path = "../storage/" . "$this->user_name " . "/";

            if (!is_dir('../storage')) {
                if (!mkdir('../storage')) {
                    throw new Exception("Storage Directory not created");
                }
            }

            if (!is_dir("../storage/$this->user_name")) {
                if (!mkdir("../storage/$this->user_name")) {
                    throw new Exception("User Directory not created");
                }
            }

            $upload = move_uploaded_file($this->profile_tmp_name, $storage_path . $this->profile_image);

            if (!$upload) {
                throw new Exception("User Image not uploaded");
            }
        }
    }
}

1 Ответ

0 голосов
/ 19 ноября 2018

Я думаю, что главная проблема здесь заключается в типе строк, которые вы использовали.

В PHP есть как минимум 2 строковых способа представления строк.

  • одинарные кавычки -> записывает все как есть, например, 'hello $world' буквально печатает hello $world.

  • двойные кавычки -> печатаетиз переменных, которые встроены внутри, например, "$data" выведет значение переменной $data.Обратите внимание, что переменные данных, которые не являются «простыми», или, точнее, те, которые имеют квалификаторы, такие как $this->data или даже $row['data'] , имеют , заключенные в фигурные скобки, такие как "{$this->data}" и "{$row['data']}", или иначевам будет трудно анализировать их синтаксический анализатор, и, следовательно, вы можете получить неожиданные результаты.

Сказав это, ваш код может быть изменен на следующее ...

$add_query = "INSERT into `users`"
        . "(`user_id` , `first_name` , `middle_name` , `last_name` , `user_name` , `email` , `contact_number` , `password` , `gender` , `date_of_birth` , `country` , `city` , `profile_image` , `created_at` , `updated_at`  , `role`)"
        . "VALUES"
        . "('NULL' , {$this->first_name} , {$this->middle_name} , {$this->last_name} , {$this->user_name} , {$this->email} , {$this->contact_number} , {$this->password} , {$this->gender} , {$this->dob} , {$this->country} , {$this->city} , {$this->profile_image} , NOW() ,  NOW() , 'visitor')";

$db->query($add_query);
if ($db->errno) {
    throw new Exception($db->error);


    $storage_path = "../storage/" . $this->user_name . "/";

    if (!is_dir('../storage')) {
        if (!mkdir('../storage')) {
            throw new Exception("Storage Directory not created");
        }
    }

    if (!is_dir("../storage/{$this->user_name}")) {
        if (!mkdir("../storage/{$this->user_name}")) {
            throw new Exception("User Directory not created");
        }
    }


    $upload = move_uploaded_file($this->profile_tmp_name, $storage_path . $this->profile_image);

    if (!$upload) {
        throw new Exception("User Image not uploaded");
    }
}

Однако, если проблема не устранена.Затем вы должны убедиться, что каталог, в который вы пытаетесь переместить загруженный файл, уже существует и имеет права на запись для пользователя, который пытается записать в него.обычно в UNIX это может быть достигнуто с помощью chmod 777 /path/to/directory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...