我正在尝试在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);
如何解决此问题,以便在大小写发生变化时重命名/移动文件?
答案 0 :(得分:1)
在Windows上,文件名大小写无关紧要。因此,名称为uppercase.txt
和UPPERCASE.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
);