Php 如何删除文件数组?
我在删除属于帖子的文件数组时遇到问题。我有以下更新功能:Php 如何删除文件数组?,php,laravel,Php,Laravel,我在删除属于帖子的文件数组时遇到问题。我有以下更新功能: public function update(Post $post, PostsReq $request) { $input = $request->all(); if ($request->hasFile('image')) { $this->deleteImage($post); foreach ($request->file('
public function update(Post $post, PostsReq $request) {
$input = $request->all();
if ($request->hasFile('image')) {
$this->deleteImage($post);
foreach ($request->file('image') as $file) {
$ext = $file->getClientOriginalExtension();
$name = $file->getClientOriginalName();
$image_name = $name . ".$ext";
$upload_path = 'image';
$file->move($upload_path, $image_name);
Photos::create([
'post_id' => $post->id,
'image' => $image_name,
]);
}
}
$post->update($input);
return redirect()->route('postindex');
}
我想要的是,当更新表单从输入接收到新文件时,它将删除旧文件,然后用新文件替换它们。但是我无法使删除文件的方法起作用。以下是删除文件的方法:
private function deleteImage(Post $post)
$photos = Photos::where('post_id', $post->id)->get();
$exist = Storage::disk('image')->exists($photos);
if (isset($photos) && $exist) {
$delete = Storage::disk('image')->delete($photos);
if ($delete) {
return true;
}
return false;
}
}
我还想知道是否有更好的方法,比如在帖子中插入照片。比如,我必须创建一个文件管理器来处理文件,然后只要在需要的时候将文件从那里分配给一个帖子就行了吗?
就这些,谢谢 在
deleteImage
函数中,需要提取文件名。即Photos
模型中的image
列
您必须像这样更改函数:
private function deleteImage(Post $post){
// pluck filename i.e. image from Photos model.
$photos = Photos::where('post_id', $post->id)->pluck('image');
$exist = Storage::disk('image')->exists($photos);
if (isset($photos) && $exist) {
$delete = Storage::disk('image')->delete($photos);
if ($delete) {
return true;
}
return false;
}
}
希望,这可能会对您有所帮助。您可以使用
->pull(path\u PHOTO\u COLUMN)
获取所有路径照片的数组,并将结果数组传递给\File::delete
,以便同时删除所有文件
private function deleteImage(Post $post)
{
$photos = Photos::where('post_id', $post->id)->pluck('photo_path');
if(count($photos))
{
\File::delete($photos);
return true;
}
return false;
}
新文件保存没有问题,但旧文件删除有问题。我说的对吗?正确,我在删除旧文件时遇到问题@SagarGautam
delete
函数将filename作为参数,但您没有为delete提供filename参数function@PrestonGarvey22如果你想用另一种方法来做这件事。考虑使用任何这些软件包。或它们使附加和获取媒体文件到模型文件变得容易。