Невозможно сохранить загруженное изображение в папку на локальном диске - PullRequest
0 голосов
/ 15 апреля 2020

Я сейчас создаю приложение CRUD, используя Laravel. Требуется, чтобы я загружал изображения и информацию, но, похоже, существуют некоторые проблемы при хранении изображений в папке localdisk.

Вот мой код контроллера:

 public function store(Request $request)
    {
        $lostitem =new Admin();


        $this->validate($request, [
            'date' => 'required',
            'TimeFound' => 'required',
            'AreaWhereFound' => 'required',
            'image' => 'required',
            'Remark' => 'required',
            'DateClaimed' => 'required',
            'TimeClaimed' => 'required',
            'CategoryID'=>'required'
        ]);


        $uuid = Str::uuid()->toString();



        // $record = new Admin;
        // return view('students.create');
        $lostitem->code = $uuid;
        $lostitem->date = $request->date;

        $lostitem->TimeFound = $request->TimeFound;
        $lostitem->AreaWhereFound = $request->AreaWhereFound;
        $lostitem->image = $request->image;


         if($request->hasfile('image'))
       {
            $filenameWithExt=$request->file('image')->getClientOriginalName();
            $filename=pathinfo($filenameWithExt,PATHINFO_FILENAME);
            $extension =$request->file('image')->getClientOriginalExtension();
            $fileNameToStore=$filename.'_'  .time().'.'.$extension;
            $path=$request->file('image')->storeAs('public/images',$fileNameToStore);


                // $file = $request->file('image');
                //  $extension =$file->getClientOriginalExtension();//getting image extensionimage
                //  $filename=time()  ."." .$extension;

                //   $file->move('uploads',$filename->getClientOriginal);

                //   //getting from data base


            }
         else
         {
            //  $lostitem->image = "";
            $fileNameToStore='noimage.jpg';

         }
        $lostitem->image = $request->image ;
        $lostitem->Remark = $request->Remark;
        $lostitem->DateClaimed = $request->inputDateClaimed;
        $lostitem->TimeClaimed = $request->TimeClaimed;
        $lostitem->CategoryID = $request->CategoryID;

        $lostitem->save();
         return redirect(route('LostItem_add'))->with('successMsg', 'Record added!');
    }

Другая информация сохраняется Я надеюсь получить помощь.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Сохранить путь к изображению в базе данных

public function store(Request $request)
{
    $lostitem =new Admin();
    $this->validate($request, [
        'date' => 'required',
        'TimeFound' => 'required',
        'AreaWhereFound' => 'required',
        'image' => 'required',
        'Remark' => 'required',
        'DateClaimed' => 'required',
        'TimeClaimed' => 'required',
        'CategoryID'=>'required'
    ]);

    $uuid = Str::uuid()->toString();

    $lostitem->code = $uuid;
    $lostitem->date = $request->date;
    $lostitem->TimeFound = $request->TimeFound;
    $lostitem->AreaWhereFound = $request->AreaWhereFound;
    $lostitem->image = $request->image;

    if($request->hasfile('image')){
        $filenameWithExt=$request->file('image')->getClientOriginalName();
        $filename=pathinfo($filenameWithExt,PATHINFO_FILENAME);
        $extension =$request->file('image')->getClientOriginalExtension();
        $fileNameToStore=$filename.'_'  .time().'.'.$extension;
        $path=$request->file('image')->move(public_path('images/'),$fileNameToStore);
    }
    else{
        $fileNameToStore='noimage.jpg';
    }

    $lostitem->image = $path ;
    $lostitem->Remark = $request->Remark;
    $lostitem->DateClaimed = $request->inputDateClaimed;
    $lostitem->TimeClaimed = $request->TimeClaimed;
    $lostitem->CategoryID = $request->CategoryID;
    $lostitem->save();
    return redirect(route('LostItem_add'))->with('successMsg', 'Record added!');
}

и показать его

<img src="{{ asset('images/'.$item->image) }}">
0 голосов
/ 16 апреля 2020

Измените свой код контроллера следующим образом:

public function store(Request $request)
{
    $lostitem =new Admin();
    $this->validate($request, [
        'date' => 'required',
        'TimeFound' => 'required',
        'AreaWhereFound' => 'required',
        'image' => 'required',
        'Remark' => 'required',
        'DateClaimed' => 'required',
        'TimeClaimed' => 'required',
        'CategoryID'=>'required'
    ]);

    $uuid = Str::uuid()->toString();

    $lostitem->code = $uuid;
    $lostitem->date = $request->date;
    $lostitem->TimeFound = $request->TimeFound;
    $lostitem->AreaWhereFound = $request->AreaWhereFound;
    $lostitem->image = $request->image;

    if($request->hasfile('image')){
        $filenameWithExt=$request->file('image')->getClientOriginalName();
        $filename=pathinfo($filenameWithExt,PATHINFO_FILENAME);
        $extension =$request->file('image')->getClientOriginalExtension();
        $fileNameToStore=$filename.'_'  .time().'.'.$extension;
        $path=$request->file('image')->move(public_path('images/'),$fileNameToStore);
    }
    else{
        $fileNameToStore='noimage.jpg';
    }

    $lostitem->image = $request->image ;
    $lostitem->Remark = $request->Remark;
    $lostitem->DateClaimed = $request->inputDateClaimed;
    $lostitem->TimeClaimed = $request->TimeClaimed;
    $lostitem->CategoryID = $request->CategoryID;
    $lostitem->save();
    return redirect(route('LostItem_add'))->with('successMsg', 'Record added!');
}

И затем получите доступ к своему изображению в блейде, как это

<img src="{{ asset('images/'.$item->image) }}">

И убедитесь, что у вас есть папка с именем "images" в каталоге c publi

...