Почему мое изображение не сохраняется в указанной папке в Laravel 5.6? - PullRequest
0 голосов
/ 30 июня 2018

В моей форме я попросил загрузить изображение. Тогда я уже проверил это, и это работает. Но файл не сохраняется в папке загрузки.

Вот фрагмент моего ProductController:

public function store(Request $request)
{
    // Validate fields
    $this->validate($request, [
        'product_name' => 'required',
        'product_price' => 'required',
        'product_desc' => 'required',
        'product_img' => 'image|required'
    ]);

    // Upload image
    if($request->hasFile('image')) {
        app()->make('path.public/uploads');
        $image = $request->image;

        $image->move('uploads', $image->getClientOriginalName());


    }

    /*// Save the data into database
    Product::create([
        'name' => $request->product_name,
        'price' => $request->product_price,
        'description' => $request->product_desc,
        'image' => $request->image->getClientOriginalName()
    ]);


    // Echo a session message
    $request->session()->flash('msg', 'Your product has been added');


    // Redirect to view page
    return redirect('/products');*/

}

Я уже пытался искать другие возможные решения, но другие вопросы уже касались сохранения изображения в базе данных. Я также попытался проверить, существует ли каталог uploads и существует ли он.

Может кто-нибудь помочь, пожалуйста? Спасибо.

Ответы [ 3 ]

0 голосов
/ 30 июня 2018
app()->make('path.public/uploads');
0 голосов
/ 01 июля 2018

Я уже решил это. Переменная была неправильной все время. Вместо того, чтобы быть product_img, я поместил image.

Вот обновленный код:

    // Validate fields
    $this->validate($request, [
        'product_name' => 'required',
        'product_price' => 'required',
        'product_desc' => 'required',
        'product_img' => 'image|required'
    ]);

    // Upload image
    if($request->hasFile('product_img')) {
        $image = $request->product_img;         
        $image->move('uploads', $image->getClientOriginalName());   
    }  
0 голосов
/ 30 июня 2018

Попробуйте это: Официальная документация : Вот как это должно выглядеть в вашем контроллере:

if($request->hasFile('image')) { $request->file('image')->store('uplodads/', 'public'); }

Это сохранит изображение в /storage/app/public/uploads по умолчанию. Вы также можете изменить путь public в /config/filesystems.php. Затем вы можете получить доступ к файлу (если вы связали хранилище) с помощью asset('storage/uploads'.$img_name).

...