Moving Folders in Laravel 5.5
情景
我试图允许用户在 laravel 5.5 中移动文件夹,但 Laravel 站点没有仅移动文件夹文件的示例代码。我在其他地方看了看,在 stackoverflow 和其他地方遇到了其他几个答案,并全部尝试了。
Laravel 移动所有文件目录
https://laracasts.com/discuss/channels/laravel/laravel-cannot-use-movedirectory-and-copydirectory-problem
Laravel,无法复制目录或移动目录
当我尝试移动文件夹时,我在 Devtools 中收到此响应:
1 2 3 | 0:"I want to move this /public/Gallery" 1:"To here /public/Images" 2:false |
来自后端的这段代码
1 2 3 4 5 6 7 8 | $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, ]; |
早些时候我收到一个回复??说该文件已经存在,虽然它没有但我不能复制它。
编辑
使用
1 2 3 4 | 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 存储中移动文件夹,而不是文件。最好使用 Storage Facade。
感觉真的很愚蠢,错误地使用了该方法,因为我没有看到它在任何地方显式引用,你必须在"move from"和"move to"目录中包含文件夹名称,我\\'一直在说:
但这不起作用,我需要这样做
被移动到
希望这对将来像我一样愚蠢的人有所帮助。
文件和目录大多是相同的东西,move 会将它们视为相同。
您可以创建一个指向公共的本地磁盘,以便更轻松地使用公共目录
1 | Storage::move($item['path'], $path); |
move 函数的作用类似于 bash mv 命令,本质上只是一个重命名。 2 个目录不能具有相同的名称。所以要么先删除 public/Images/ 要么将内容合并到 public/Images 并删除 public/Gallery
如果您希望将目录移动到 $path 中,则必须将目录名称放在路径的末尾
1 | Storage::move($item['path'], $path.'/Gallery'); |
这将创建\\'/public/Images/Gallery\\'