猿问

在 Laravel 中将本地文件视为上传文件

Laravel 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.


芜湖不芜
浏览 241回答 1
1回答

烙印99

如果ImageUpload是您不想重写的第三方库类,我会在这里看到 2 个选项:始终检查您是否正在传递UploadedFileto 的实例ImageUpload->upload()。将其转换为UploadedFileif string。在您应该执行选项 1 中描述的相同操作的地方扩展ImageUpload类和覆盖upload函数。
随时随地看视频慕课网APP
我要回答