在Laravel中编辑和复制图像[无法将图像数据写入路径]

时间:2018-11-14 10:13:41

标签: php laravel laravel-5.7

我为我的项目创建了以下4个模型及其表结构:

Media.php 要在应用中上传图片

  

Medias表结构

id |路径

路径示例:uploads / images / media / food-1542110154.jpg

Post.php 创建帖子

  

Posts表结构

id |标题|内容

FeaturedImage.php 帖子的精选图片

  

Posts表结构

id | post_id |路径

  

帖子模型和FeaturedImage模型是一对一的关系

UploadImage.php 要调整上传图像的大小并将其移动到另一个目录。该模型没有迁移和控制器

PostsController.php中的代码段以创建帖子

use App\UploadImage;
use App\Media;
class PostController extends Controller
{
private $imagePath= "uploads/images/post/";
public function store(Request $request)
{
    $post = new Post;
    $post->title = $request->title;
    $post->content = $request->content;
    $post->save();

    $media = Media::find($request->featured);
    if (!File::exists($this->imagePath)) {
        File::makeDirectory($this->imagePath);
    }
    $upload = new UploadImage;
    $image= $upload->uploadSingle($this->banner, $media->path, 400,300);
    $post->image()->save(new FeaturedImage([
        'path' => $image
    ]));

}
  Session::flash('success', 'Post created sucessfully !');
  return redirect()->route('post.index');
}

UploadImage.php的代码段

use Intervention\Image\Facades\Image;
use Spatie\LaravelImageOptimizer\Facades\ImageOptimizer;
use Illuminate\Database\Eloquent\Model;
class UploadImage extends Model
{

  public  function  uploadSingle($savePath, $image,$width,$height)
 {
    Image::make(public_path($image))->fit($width, $height)->save($savePath);
    ImageOptimizer::optimize($savePath);
    return $savePath;
 }  
}

在我的Laravel应用中,我尝试使用UploadImage.php中编写的方法来编辑已上传图像的尺寸,并将编辑后的图像保存在post目录中,并将其路径保存在featured_images中桌子。

但是我一直在**无法将图像数据写入路径**错误。

如果有人能指出我犯的错误,我将非常感激。

  

请勿将此内容标记为重复内容。由于我浏览了几乎所有与此类错误有关的帖子,因此对我没有帮助。

1 个答案:

答案 0 :(得分:0)

在我的UploadImage.php模型中调整了几行,然后解决了。

public  function  uploadSingle($savePath, $image,$width,$height)
{
    $filename = basename($image);
    $location = $savePath . $filename;
    Image::make($image)->save($location);
    ImageOptimizer::optimize($location);
    return $location;
}