Laravel重命名文件

时间:2018-08-07 14:31:02

标签: php laravel laravel-5.6

我正在尝试在laravel 5.6中重命名文件

当我物理上重命名文件时,这很好用,但是当我只是改变大小写时-它会引发错误:

League\Flysystem\FileExistsException: File already exists at path

示例

old path: Music/The Corrs/The Corrs - What Can I Do.mp3
new path (DO): Music/The Corrs/The Corrs - What Can I DO.mp3

代码

Storage::disk($disk)->move($old, new);

如何解决此问题,以便在大小写发生变化时重命名/移动文件?

2 个答案:

答案 0 :(得分:1)

在Windows上,文件名大小写无关紧要。因此,名称为uppercase.txtUPPERCASE.txt的文件是相同的,但是在一个文件夹中不可能有两个具有相同名称的文件。
重命名时,文件实际上已“移动”到另一个名称。但是,该文件已经存在,因此会出现错误。

我建议在重命名之前先将文件存储在temp文件夹中,以重命名文件或使用文件的临时名称。

答案 1 :(得分:-1)

袖套解决方案

$oldPath = "Music/The Corrs/The Corrs - What Can I Do.mp3";
$newPath = "Music/The Corrs/The Corrs - What Can I DO.mp3";
$paddedPath = str_replace(" ", "@@padding@@", $oldPath);

//move from old path to padded path
Storage::move(
   $oldPath, 
   $paddedPath, 

);

//move from padded path to new
Storage::move(
    $paddedPath, 
    $newPath
);