我为我的项目创建了以下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
中桌子。
但是我一直在**无法将图像数据写入路径**错误。
如果有人能指出我犯的错误,我将非常感激。
请勿将此内容标记为重复内容。由于我浏览了几乎所有与此类错误有关的帖子,因此对我没有帮助。
答案 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;
}