Php 将本地文件视为Laravel中的上载文件

Php 将本地文件视为Laravel中的上载文件,php,laravel,file-upload,Php,Laravel,File Upload,拉威尔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

拉威尔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
中。我想把它传递给上面
ImageUpload
类的
upload
方法。但是我对文件的引用显然是一个字符串,而
upload
方法需要
UploadedFile
的实例。因此,当我尝试这样做时:

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

如果
ImageUpload
是您不想重写的第三方库类,我将传递一个字符串而不是
UploadedFile

的实例,因此出现错误。我在这里看到两个选项:

  • 始终检查是否正在将
    UploadedFile
    的实例传递到
    ImageUpload->upload()
    。如果
    string
    ,则将其转换为
    UploadedFile
  • 扩展
    ImageUpload
    类并覆盖
    upload
    功能,在该功能中,您应该执行选项1中描述的相同操作

  • 我的问题是如果我做了
    $file=newuploadedfile($pathName,“test.png”)
    我得到了一个
    FileNotFoundException
    ,尽管
    $pathName
    是正确的。我使用
    资源路径