【发布时间】:2021-08-20 15:09:07
【问题描述】:
我有帖子表并为它上传图片,所以在PostController() 的update() 方法中我想编辑帖子和图片
为了编辑图像,我想从文件夹和数据库中删除最后的图像,并替换新图像。
所以我可以从数据库中删除最后的图像,但我不能从文件夹中删除它们
控制器:
public function update(StorePostRequest $request , $id )
{
$validatedData = $request->all();
if ($request->hasfile('image')) {
$postTitle = $request->title; //post title for folder name and the images inside it
//delete last Images from database for updating images
Image::where('imageable_type' , 'App\Models\Post')->where('imageable_id' , $id)->delete();
$directory =storage_path().'/images/posts/'.$postTitle;
if($directory){
Storage::disk('public')->deleteDirectory('images/posts/.$postTitle');
}
$files = $request->file('image');
foreach ($files as $file) {
$imageName = time().rand(1,10000).'.'.$file->extension();
$postTitle = $request->title; //post title for folder name and the images inside it
$imagePath = public_path(). '/images/posts/'.$postTitle;
$file->move($imagePath, $imageName);
$image = new Image;
$image->image = $imageName;
$image->path = $imagePath;
$images[] = $image; // make an array of uploaded images
}
}
$post = Post::find($id);
$post->category_id = $validatedData['category_id'];
$post->title = $validatedData['title'];
$post->body = $validatedData['body'];
$post->study_time = $validatedData['study_time'];
$post->save();
$post->images()->saveMany($images);
return response()->json([
"success" => true,
"message" => "successfully",
"data" => $post
]);
}
帖子和图片之间的关系是:一对多的多态,我用邮递员来品尝它
我试过这种方法,但它不起作用:
File::delete(public_path('/images/posts/'.$postTitle));
Storage::disk('public')->deleteDirectory($directory);
另外,当我尝试时
Storage::disk('public')->deleteDirectory('images/posts/');
它可以工作并且帖子文件夹已被删除,但问题来自$postTitle
当我使用它时,它不起作用
【问题讨论】:
-
您要从图像文件夹中删除图像吗? ?问题不清楚
-
是的,我编辑我的问题..请再检查一遍
标签: php laravel api file-upload