Php 将本地文件视为Laravel中的上载文件
拉威尔5.7。我有一个用于处理图像上传的类: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
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
是正确的。我使用资源路径