Не удалось загрузить изображение. На сервер laravel - PullRequest
1 голос
/ 24 января 2020

Не удалось загрузить изображение.

ссылка https://comedoruniversitariouncp.000webhostapp.com/products/create

Проект работает на локальном сервере, ошибка появляется при загрузке на сервер

create.blade. php

<form action="{{ route('products.store') }}" method="POST" enctype="multipart/form-data">
        @csrf
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Name</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" name="name">
            </div>
        </div>
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Price</label>
            <div class="col-sm-10">
                <input type="number" class="form-control" name="price" step="0.1">
            </div>
        </div>
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Amount</label>
            <div class="col-sm-10">
                <input type="number" class="form-control" name="amount" >
            </div>
        </div>
        <div class="form-group row">
            <label class="col-form-label col-sm-2">Image</label>
            <div class="col-sm-10">
                <input type="file" class="form-control-file" name="image">
            </div>
        </div>
        <button type="submit" class="btn btn-primary">Create</button>
    </form>

ProductController. php

    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'price' => 'required',
            'amount' => 'required',
            'image' => 'required|image'
        ]);

        $image = $request->file('image');

        $new_name = rand() . '.' . $image->getClientOriginalExtension();
        $image->move(public_path('images'), $new_name);

        Product::create([
            'name' => $request->name,
            'price' => $request->price,
            'amount' => $request->amount,
            'image' => $new_name
        ]);

        return redirect()->route('products.index')->with('message', 'Product created successfully');
    }

Ответы [ 3 ]

0 голосов
/ 24 января 2020

Вы можете использовать Storage Facade как удобный способ взаимодействия с локальными файловыми системами.

use Illuminate\Support\Facades\Storage;
//...
$new_name = rand() . '.' . $image->getClientOriginalExtension();
Storage::disk('public')->putFileAs('images', request->file('image'), $new_name);
//...

Документы

0 голосов
/ 24 января 2020

Используйте тип пантомимы как mimes:jpeg,png,jpg,doc,docx,pdf,mp4,mov,ogg,qt

$request->validate([
        'name' => 'required',
        'price' => 'required',
        'amount' => 'required',
        'image' => 'required|mimes:jpeg,png,jpg,doc,docx,pdf,mp4,mov,ogg,qt'
    ]);
0 голосов
/ 24 января 2020

Вы должны попробовать это

Попробуйте добавить mimetypes при проверке изображения.

public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'price' => 'required',
            'amount' => 'required',
            'image' => 'required|mimes:jpeg,bmp,png'
        ]);

        $image = $request->file('image');

        $new_name = rand() . '.' . $image->getClientOriginalExtension();
        $image->move(public_path('images'), $new_name);

        Product::create([
            'name' => $request->name,
            'price' => $request->price,
            'amount' => $request->amount,
            'image' => $new_name
        ]);

        return redirect()->route('products.index')->with('message', 'Product created successfully');
    }
...