Загрузка и сохранение изображения в формате Laravel 5.8 без сохранения в базе данных или пути к файлу - PullRequest
0 голосов
/ 21 апреля 2020

Совершенно новый для laravel Я хочу загрузить изображение и сохранить его в базе данных и пути к файлу. Первая проблема, с которой я столкнулся, это то, что изображение не появляется в массиве для функции validateRequest , поэтому оно возвращается как NULL в базе данных. Вторая проблема - я пытался использовать хранилище: ссылка для хранения всех загруженных изображений, но не могу сохранить изображения и не уверен, какой путь к файлу я хотел использовать.

    public function validateRequest()
    {
        $validated = request()->validate([
            'title' => 'required|string',
            'h1' => 'required|string',
            'page_title' => 'required|string',
            'meta_description' => 'required|string',
            'content' => 'required|string',
            'active' => 'integer'
        ]);

        if (request()->hasFile('image')){
            $validated = request()->validate([
                'image' => 'sometimes|file|image|mimes:jpeg,png,jpg,gif,svg|max:5000'
            ]);
        }

        // Check if active is ticked
        $validated['active'] = isset(request()->active[0]) ? 1 : 0;

        // Create slug from title
        $validated['slug'] = Str::slug(request()['title'], '-');

        return $validated;
    }
    public function storeImage($post)
    {
        if (request()->hasFile('image')) {
            $post->update([
                'image' => request()->image->storeAs('/images/uploads/posts', 'public')
            ]);

        }
    }

Я попытался поместить изображение с остальными полями в $validated = request()->validate, но затем он говорит, что «это изображение должно быть изображением», даже если изображение было выбрано. Очень ценю помощь, спасибо.

1 Ответ

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

Первая проблема подтверждена. Пожалуйста, добавьте это в ваш form

<form ... enctype="multipart/form-data">

Вторая проблема заключается в следующем решении. В вашем контроллере функция вызова, как это

$productImage = $request->file('your_image_name');

if (is_file($productImage)) {
    $imageUrl = $this->productImageUpload($productImage);
    $product->your_database_field_name = $imageUrl;
}


protected function productImageUpload($productImage)
{
    $imageName = $productImage->getClientOriginalName();
    $directory = 'your_file_path/your_file_path/';
    $imageUrl = $directory . $imageName;
    $productImage->move($directory, $imageName);
    return $imageUrl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...