首页 > 解决方案 > 重命名 Laravel 公用文件夹中的文件

问题描述

我的公用文件夹中有这个结构:

/images
    /player_icons
        Ajax.png
        Barcelona.png
        ...

我需要让管理员用户只需输入新名称即可重命名文件,而不是上传新文件。

我尝试过老式的 PHP 方式:

rename('/images/player_icons/Ajax.png', '/images/player_icons/test.png');

这会产生错误:

File not found at path: images/player_icons/Ajax.png

我也尝试过使用Storage外观,虽然从外观上看,这在公用文件夹中不起作用:

Storage::move('/images/player_icons/Ajax.png', '/images/player_icons/test.png');

我不明白为什么该rename()选项不起作用。如果我example.com/images/player_icons/Ajax.png在浏览器中访问,图像就在那里。

我该如何做到这一点?

标签: phplaravel

解决方案


您可能需要public_path尝试一下辅助功能

public_path 函数返回公共目录的完全限定路径。您还可以使用 public_path 函数生成公共目录中给定文件的完全限定路径

但是,直接重命名公共目录上的内容意味着您必须授予此目录写入权限或更改此目录的所有权以由服务器用户拥有(这几乎是www-data),这是一种冒险的事情。

更好的方法是(符号链接)存储路径(默认情况下是可写的)并让用户在那里上传和重命名文件

更多信息可以在这里找到:文件系统文档


推荐阅读