为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
芜湖不芜 2021-09-18 17:10:17
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.
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

如果ImageUpload是您不想重写的第三方库类,我会在这里看到 2 个选项:

  1. 始终检查您是否正在传递UploadedFileto 的实例ImageUpload->upload()。将其转换为UploadedFileif string

  2. 在您应该执行选项 1 中描述的相同操作的地方扩展ImageUpload类和覆盖upload函数。


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 240 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信