#laravel #image #api
#laravel #изображение #API
Вопрос:
Я пытаюсь сохранить свое изображение в базе данных при создании своего пользователя, и для этого я использую postman
Мой код:
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:
Я действительно в замешательстве. Вы хотите сохранить изображение в базе данных (плохая идея). Во-вторых, вы хотите сохранить изображение в базе данных, но вы сохраняете только имя файла.
Предложение: если вы хотите сохранить изображения в базе данных, у вас есть возможность преобразовать его в 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 ]);