当前位置: 首页 > 知识库问答 >
问题:

无法从laravel中的驱动器中删除映像

淳于嘉树
2023-03-14

在post控制器中调用销毁方法时,我无法删除文件(由用户上载)。

我可以将文件上载到我的驱动器,即root/public/uploads/attachment

这是我的文件系统

'uploads' => [
        'driver' => 'local',
        'root' => public_path('uploads'),
    ],

这是我在控制器中尝试过的

 public function destroy(Post $post)
{
    $post=Post::find($post->id);
    Storage::disk('uploads')->delete($post->image);
    $post->categories()->detach();
    $post->tags()->detach();
    $post->delete();
    return redirect('admin/post')->with('message','Deleted Sucessfully');
}

我也尝试过

unlink(public_path().'/uploads/'.$post->image);

但这两个行动给出了相同的结果后被删除,但当我物理检查附件文件夹的图像仍然存在

共有2个答案

井兴怀
2023-03-14

您需要使用文件的完整路径才能删除它。

https://laravel.com/docs/5.8/filesystem#deleting-files

尝试使用Storage::disk('uploads')中的完整路径-

梁盛
2023-03-14

如果指定磁盘,请尝试(映像的完整路径)。。

Storage::disk('uploads')->delete(public_path().'/uploads/'.$post->image);

或者

Storage::delete($post->image);

并且必须使用

use Illuminate\Support\Facades\Storage;
 类似资料:
  • 很好的一天! 你好 目前我在laravel工作,我是新来的。我一直在寻找我的问题的解决方案,但我找不到解决方案。我laravel的工作是访问已经没有 /public在网址我修复这个通过. htaccess,但它可以访问也与 /public在网址。请看下面的链接供您参考。 https://utok.ph/ https://utok.ph/public 我的htaccess文件 重写引擎在重写规则 ^

  • 问题内容: 设置新的构建机器(CentOS 7,Docker CE 17.12.0-ce)时,我做了一个简单的测试: 效果很好,但是现在我无法删除Ubuntu映像。 任何容器都没有使用它(总之那不是错误): 我什至尝试了nuke-from-orbit方法: 并重新启动docker守护进程: 是什么赋予了?ubuntu映像是否存在并不重要,我只是不明白为什么我无法清理它。 更新资料 我尝试再次拉出图

  • 我为laravel安装了这个Cartalyst Stripe软件包,这对我来说只是个麻烦。。我只是不能让它工作,现在我决定完全删除它。因此,我在composer.json中删除了需要这个包的行。我从提供者的confing/app.php中删除了该行 我错过了什么?

  • 无法从外壳中删除集合, 集合可用并且我的 php 脚本正在访问它的东西(选择|更新) 但当我使用: 它给了我一个错误:

  • 我的服务器上安装了JDK 1.8.0_261和JDK 1.8.0_265。 当我从控制面板上卸载这两个JDK时,JDK 1.8.0_261的文件夹结构会自动从我的Java安装目录中删除,但对于JDK 1.8.0_265来说则是如此 我甚至重新启动了服务器,但仍然没有删除文件夹。我无法重新命名相同的名称。 目前我使用的是openJDK11,所有的注册表项 我怀疑某些服务仍在使用jdk8,我想从我的服