【问题标题】:Failed to rename image and upload using storeAs in Laravel在 Laravel 中使用 storeAs 重命名图像和上传失败
【发布时间】:2020-10-18 11:13:19
【问题描述】:

我创建了一个表单来存储带有图像的文章,并从中生成一个调整大小的版本作为缩略图。

我希望在文章 slug 之后重命名图像并存储在“public/img/articles-images”目录中,但我一直收到:“图像源不可读”错误

这是我控制器中的图片上传处理函数:

private function handleRequest($request)
{
   $data = $request->all();
   if ($request->hasFile('image')) {
    $image = $request->file('image');
    $fileName = $request->slug;

        
    $successUploaded = $image->storeAs('img/articles-images', $fileName);

    if($successUploaded) {
     $width = config('cms.image.thumbnail.width');
     $height = config('cms.image.thumbnail.height');

    $extension = $image->getClientOriginalExtension();
    $thumbnail = str_replace(".{$extension}", "_thumb.{$extension}", $fileName);

    Image::make('img/articles-images' . '/' . $fileName)
        ->resize($width, $height)
        ->save('img/articles-images' . '/' . $thumbnail);
  }

     $data['image'] = $fileName;
  }

  return $data;
}

【问题讨论】:

    标签: php laravel file-upload


    【解决方案1】:

    storeAs() 方法,它接收路径、文件名和(可选)磁盘作为其参数:

    $successUploaded = $request->file('image')->storeAs(
        'images', $fileName
    );
    

    【讨论】:

    • 如果没有重命名功能,图片会正常上传到“public/img/articles-images”目录,因此“images”不是预期目录,我也不断收到相同的错误消息跨度>
    【解决方案2】:

    我解决了!显然根本不需要 storeAs() 方法,新代码如下:

      if ($request->hasFile('image')) {
          $image = $request->file('image');
          $fileName = $request->slug.'.' .$image->getClientOriginalExtension();
    
          $destination = $this->uploadPath;
    
          $successUploaded = $image->move($destination, $fileName);
    
         // //
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 2016-02-02
      • 2018-09-23
      • 2016-08-21
      • 1970-01-01
      相关资源
      最近更新 更多