Как решить проблему сохранения изображения в Laravel - PullRequest
3 голосов
/ 01 ноября 2019

Я пытаюсь сохранить свое изображение в базе данных, оно перемещается в общую папку, но не сохраняется в базе данных. Но пока кроме имиджа все работает нормально. И когда вызывается метод save (), он выдает ошибку ниже. See the image for more information.

Вот что я попробовал мой код в контроллере

$student=new Student;
        $student->name = $request->input('name');
        $student->username = $request->input('username');
        $student->email = $request->input('email');
        $student->password = bcrypt($request->input('password'));
        $student->gender = $request->input('gender');
        $student->phone = $request->input('phone');
        if($request->hasFile('image'))
        {
            $file=$request->File('image');
            $ext=$file->getClientOriginalExtension();
            $filename=$student->username . '.' . $ext;
            $file->move('images/',$filename);
            $student->image=$filename;
        }
        $student->save();
        $student->subjects()->attach($request->id);
        return back()->with('msg','Succesfully Added');

Ответы [ 4 ]

3 голосов
/ 01 ноября 2019

используйте clientExtension() вместо getClientOriginalExtension() и убедитесь, что ваш путь здесь правильный, я определил путь public.

if ($request->hasFile('image')) {
    $file = $request->image;
    $destinationPath = public_path().'/images/';
    $filename= $student->username . '.'.$file->clientExtension();
    $file->move($destinationPath, $filename);
    $student->image=$filename;

}
1 голос
/ 01 ноября 2019

1) Убедитесь, что вы добавили enctype = "multipart / form-data" в форму и поле с именем поля = "image"

2) В вашемконтроллер

if( $request->hasFile('image')) {
    $image = $request->file('image');
    $path = public_path(). '/images/';
    $filename = $student->username . '.' . $image->getClientOriginalExtension();
    $image->move($path, $filename);
    $student->image=$filename;
}
    $student->save();
0 голосов
/ 01 ноября 2019

пожалуйста, добавьте использование Imagick в верхней части контроллера.

use Imagick;
0 голосов
/ 01 ноября 2019

Вы получаете эту ошибку, если при загрузке возникла проблема (в основном из-за ее размера) или www-данные не имеют доступа к временной папке сервера.

Попробуйте запустить код с меньшим файлом илиизмените конфигурацию вашего сервера.

Для разрешения

  • может быть, что www-data не имеет разрешения на его чтение.
  • это может бытьPrivateTmp имеет значение true в вашей конфигурации systemd, поэтому php не может видеть tmp apache.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...