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
的实例。
答案 0 :(得分:0)
如果ImageUpload
是您不想重写的第三方库类,我在这里看到2个选项:
UploadedFile
的实例传递给ImageUpload->upload()
。如果为UploadedFile
,请将其转换为string
。ImageUpload
类并覆盖upload
函数,您应在其中执行选项1中所述的相同操作。