重命名Laravel公用文件夹中的文件

时间:2019-09-12 09:22:19

标签: php 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,则图像在那里。

我如何做到这一点?

2 个答案:

答案 0 :(得分:1)

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

  

public_path函数将返回标准路径。   公共目录。您也可以使用public_path函数   在公共场所生成给定文件的标准路径   目录

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

更好的方法是(symlink)存储路径(默认情况下是可写的),并允许用户在此上传并重命名文件

有关此内容的更多信息,请参见:File system docs

答案 1 :(得分:1)

使用此

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