Изображение не сохраняется / обновляется в базе данных с помощью Laravel - PullRequest
0 голосов
/ 16 апреля 2019

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

Мой код:

public function register(Request $request) {

    $body = $request->all();

    $userProfile = $body['user_profile'];
    $userPrev = $body['privileges'];
    $userProfile['is_super_admin'] = $userPrev['is_super_admin'];
    $facilities = $userPrev['facilities'];

    $bodyObj = array_merge($userProfile, $userPrev);

    $validator = UserValidations::validateUser($bodyObj);

    if ($validator->fails()) {
        return response([
            'status' => false,
            'message'   => __('messages.validation_errors'),
            'errors' => $validator->errors()->all()
        ], 200);
    }

    DB::beginTransaction();

    try {

        If (Input::hasFile('image')) {

            $file = Input::file('image');

            $destinationPath = public_path() . '/profile_images/';
            $filename = $file->getClientOriginalName();

            $file->move($destinationPath, $filename);

            $this->user->where('id', Auth::user()->id)->update(['profile_pic' => $filename]);
        }

Мой пользователь создан и сохранен в базе данных,но изображение не так.
Ваша помощь будет высоко оценен!

1 Ответ

0 голосов
/ 17 апреля 2019

Я действительно смущен. Вы хотите сохранить изображение в базе данных (плохая идея). Во-вторых, вы хотите сохранить изображение в базе данных, но сохраняете только имя файла.

Предложение: Если вы хотите сохранить изображения в базе данных, у вас есть возможность преобразовать их в base64 и сохранить строку. При получении вы можете декодировать base64. Например:

$file = Input::file('image');    
$img_data = file_get_contents($file);
$base64 = $base64_encode($img_data);
$this->user->where('id', Auth::user()->id)->update(['profile_pic' => $base64 ]);

Еще одно предложение [Наилучший способ]: сохранить путь в базе данных и сохранить файл в хранилище или в общем доступе и использовать URL для доступа к изображению

Однако, если вы все еще хотите сохранить его в базе данных

$image = addslashes(file_get_contents(Input::file('image')));
$this->user->where('id', Auth::user()->id)->update(['profile_pic' => $image ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...