Laravel 5 在Laravel 5.5中移动文件夹

Laravel 5 在Laravel 5.5中移动文件夹,laravel-5,Laravel 5,场景 我试图允许用户在Laravel5.5中移动文件夹,但Laravels网站并没有只移动文件夹和文件的示例代码。我找了其他地方,在stackoverflow和其他地方找到了一些其他的答案,并尝试了所有的答案 当我尝试移动文件夹时,会在Devtools中得到以下响应: 0:"I want to move this /public/Gallery" 1:"To here /public/Images" 2:false 从后端的这段代码 $item ['path' => '/publi

场景

我试图允许用户在Laravel5.5中移动文件夹,但Laravels网站并没有只移动文件夹和文件的示例代码。我找了其他地方,在stackoverflow和其他地方找到了一些其他的答案,并尝试了所有的答案

当我尝试移动文件夹时,会在Devtools中得到以下响应:

0:"I want to move this /public/Gallery"
1:"To here /public/Images"
2:false
从后端的这段代码

$item ['path' => '/public/Gallery']
$path = '/public/Images'
$success = File::moveDirectory($item['path'], $path);
return [
    "I want to move this ".$item['path'],
    "To here $path",
    $success,
];
早些时候,我收到一个回复,说这个文件已经存在了,虽然它没有,但我一直无法复制

编辑

使用
Storage::move()
我能够复制“已存在错误”

exception:"League\Flysystem\FileExistsException"
file:"C:\Users\user.name\Desktop\electron-api\vendor\league\flysystem\src\Filesystem.php"
line:402
message:"File already exists at path: public/Images"
问题


如何在laravel 5存储中移动文件夹,而不是文件。最好使用存储外观。

文件和目录基本上是一样的,move会将它们视为一样的东西。 您可以创建指向public的本地磁盘,以便更容易使用public目录

Storage::move($item['path'], $path);
move函数的工作原理类似于bash mv命令,它本质上只是一个重命名。2个目录不能具有相同的名称。因此,要么先删除public/Images/要么将内容合并到public/Images,然后删除public/Gallery

如果希望将目录移动到$path中,则必须将目录名放在路径的末尾

Storage::move($item['path'], $path.'/Gallery');

这将创建“/public/Images/Gallery”

如果错误地使用了该方法,我会觉得非常愚蠢,因为我没有看到它在任何地方被明确引用,您必须在“move from”和“move to”目录中都包含文件夹名。本质上,我一直在这样做:

Storage::move('Folder','OtherFolder')

但这不起作用,我需要这样做

Storage::move('Folder','OtherFolder/Folder')

要移动到
其他文件夹中的文件夹
仍然需要命名为folder,因此名称需要在末尾追加,laravel没有抛出任何特定错误,使我能够正确理解我做错了什么


希望这能在将来帮助像我这样愚蠢的人。

我以前就是这么做的!下面是我收到的错误消息,异常:“League\Flysystem\FileExistsException”文件:“C:\Users\user.name\Desktop\electron api\vendor\League\Flysystem\src\Filesystem.php”行:402消息:“文件已存在于路径:public/Images”该操作与linux中的mv命令类似,本质上只是一个重命名