方案
我试图允许用户在laravel 5.5中移动文件夹,但是Laravels站点没有用于移动文件夹的文件的示例代码。我在其他地方看了一遍,在stackoverflow和其他地方遇到了几个其他答案,并尝试了所有这些。
Laravel move all files directory
Laravel, unable to copyDirectory or moveDirectory
当我尝试移动文件夹时,我在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存储中移动文件夹,而不是文件。最好使用存储外观。
答案 0 :(得分:0)
文件和目录大多是相同的东西,移动会将它们视为相同。 您可以创建指向public的本地磁盘,以便更容易使用公共目录
Storage::move($item['path'], $path);
移动功能就像bash mv命令一样,它实际上只是一个重命名。 2个目录不能具有相同的名称。所以要先删除public / Images /或将内容合并到public / Images并删除public / Gallery
如果您希望将目录移动到$ path,则必须将目录名称放在路径的末尾
Storage::move($item['path'], $path.'/Gallery');
这将创建' / public / Images / Gallery'
答案 1 :(得分:0)
感觉非常愚蠢是错误地使用了Method,因为我没有看到它明确地引用了你必须在“move from”和“move to”目录中包含文件夹名称的任何地方,我一直在这样做:
Storage::move('Folder', 'OtherFolder');
但这不起作用,我需要这样做
Storage::move('Folder', 'OtherFolder/Folder');
移动到OtherFolder
的文件夹仍然需要命名为文件夹,因此名称需要在末尾追加,laravel没有抛出任何特定的错误,这些错误让我能够理解我做错了什么。
希望将来有人像我一样愚蠢。