Рассматривать локальный файл как загруженный файл в Laravel - PullRequest
0 голосов
/ 01 июля 2019

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

use Intervention\Image\Facades\Image as ImageHandler;

class ImageUpload
{
    /**
     * Upload an image to the public folder
     *
     * @param \Illuminate\Http\UploadedFile $imageFile
     * @return void
     */
    public function upload($imageFile)
    {
        $this->extension = $imageFile->extension();
        $this->filename = $this->getHashedFilename($imageFile);
        $this->originalImage = ImageHandler::make($imageFile->getRealPath())->encode();
        // Do other stuff...
        $this->saveImage();
    }
}

Это работает при передаче в него загруженного файла.Но я хотел бы повторно использовать код для работы с изображениями, хранящимися в файловой системе.Например, у меня есть изображение-заполнитель, которое хранится в resources/images.Я хотел бы передать его методу upload класса ImageUpload выше.Но моя ссылка на файл, очевидно, является строкой, тогда как метод upload ожидает экземпляр UploadedFile.Поэтому, когда я пытаюсь сделать это:

class FooBar
{
    public function savePlaceholder()
    {
        $placeholderImage = asset('images/test.png');
        $uploadHandler = new ImageUpload();
        $uploadHandler->upload($placeholderImage);
    }
}

я получаю ошибку, потому что я передаю строку, а не экземпляр UploadedFile.

1 Ответ

0 голосов
/ 01 июля 2019

В случае, если ImageUpload - это сторонний библиотечный класс, который вы не хотите переписывать, я вижу здесь 2 варианта:

  1. Всегда проверяйте, передаете ли вы экземпляр UploadedFile в ImageUpload->upload().Преобразуйте его в UploadedFile, если string.
  2. Расширьте ImageUpload функцию класса и переопределите upload, где вы должны сделать то же самое, что описано в варианте 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...