Как загрузить изображение в базу данных в Laravel 5.7? - PullRequest
0 голосов
/ 11 апреля 2019

Я делаю приложение в Laravel 5.7. Я хочу загрузить изображение в базу данных через него, и я хочу показать его из базы данных.

Я пробовал разные методы в Интернете, так как у меня возникали проблемы в

Intervention\Image\Facades\Image  

Я следовал многим советам из Интернета, чтобы внести изменения в config.app внесены изменения в Композитор

В конце используется

use Intervention\Image\Facades\Image as Image;

Итак, я решаюсь из вопроса «Неопределенный класс Image» но теперь я получаю проблемы как «Неопределенный файл класса», Метод getClientOriginalExtension не найден. Метод Upsize, make not found.

Мой код

<?php


namespace App\Http\Controllers;
use File;
use Intervention\Image\Facades\Image as Image;
use App\User;
use Illuminate\Http\Request;


class UserController extends Controller

{
//

protected $user;

/**
 * [__construct description]
 * @param Photo $photo [description]
 */
public function __construct(
    User $user )
{
    $this->user = $user;
}

/**
 * Display photo input and recent images
 * @return view [description]
 */
public function index()
{
    $users = User::all();
    return view('profile', compact('users'));
}

public function uploadImage(Request $request)
{
    $request->validate([
        'image' => 'required',
        'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
    ]);

    //check if image exist
    if ($request->hasFile('image')) {
        $images = $request->file('image');

        //setting flag for condition
        $org_img = $thm_img = true;

        // create new directory for uploading image if doesn't exist
        if( ! File::exists('images/originals/')) {
            $org_img = File::makeDirectory('images/originals/', 0777, true);
        }
        if ( ! File::exists('images/thumbnails/')) {
            $thm_img = File::makeDirectory('images/thumbnails', 0777, true);
        }

        // loop through each image to save and upload
        foreach($images as $key => $image) {
            //create new instance of Photo class
            $newPhoto = new $this->user;
            //get file name of image  and concatenate with 4 random integer for unique
            $filename = rand(1111,9999).time().'.'.$image->getClientOriginalExtension();
            //path of image for upload
            $org_path = 'images/originals/' . $filename;
            $thm_path = 'images/thumbnails/' . $filename;

            $newPhoto->image     = 'images/originals/'.$filename;
            $newPhoto->thumbnail = 'images/thumbnails/'.$filename;

            //don't upload file when unable to save name to database
            if ( ! $newPhoto->save()) {
                return false;
            }

            // upload image to server
            if (($org_img && $thm_img) == true) {
                Image::make($image)->fit(900, 500, function ($constraint) {
                    $constraint->upsize();
                })->save($org_path);
                Image::make($image)->fit(270, 160, function ($constraint) {
                    $constraint->upsize();
                })->save($thm_path);
            }
        }
    }

    return redirect()->action('UserController@index');

}

}

Пожалуйста, предложите мне любой код загрузки изображений без обновления репозиториев или подскажите, как я могу удалить проблемы из этого кода.

1 Ответ

1 голос
/ 11 апреля 2019

Начало времени читайте по ссылке ниже, потому что laravel обработал создание каталога и хэш-изображения и поместил каталог файловая система laravel , затем считывает имя файла, когда хранится в каталоге, и сохраняет имя в поле таблицы, когда требуется изображение, извлекает поле имении вызвать физический адрес на сервере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...