【问题标题】:Laravel - moving file causing errorLaravel - 移动文件导致错误
【发布时间】:2015-04-10 11:31:38
【问题描述】:

我正在尝试将文件从一个目录复制到另一个目录,如下所示:

$files = File::allFiles($temp);
                            foreach ($files as $f)
                            {
                                $f->move($destination, File::name($f));
                            }

我收到此错误:

调用未定义的方法 Symfony\Component\Finder\SplFileInfo::move()

在以下行中: $f->move($destination, File::name($f));

它似乎没有将 $f 检测为文件类型,因为每次我尝试使用它的任何功能时,例如 getClientOriginalName()

我收到一个错误。

我不断收到这个错误。似乎它没有将 $f 注册为文件..

另外要记住的一点是,我不知道文件的名称,因此我为什么要获取目录中的所有文件(一次只有 1 个)

【问题讨论】:

  • 你用的是什么版本的laravel
  • Symfony\Component\HttpFoundation\File\UploadedFile 这有方法 move,而不是 SpfFileInfo
  • 我知道,但为什么要使用 spfFileInfo?我不明白。甚至是一个更好的问题,我该如何更改它以使用该类。
  • 进入 app.php 并检查文件别名它在使用什么?
  • 你为什么不简单地使用 symfony finder 组件呢? symfony.com/doc/current/components/finder.html。显然 laravel 无论如何都依赖它,那么为什么不直接使用它呢?您要查找的示例位于页面顶部。

标签: php symfony laravel laravel-4


【解决方案1】:

试试这个:

File::get($f)

让我知道会发生什么。

【讨论】:

    【解决方案2】:

    更改这行代码:

    $files = File::allFiles($temp);
    

    $files = Input::file('files');
    

    【讨论】:

    • 不能这样做,因为我不知道文件名
    • 你不需要知道文件名,你只需要知道你的表单中发布的名称字段
    • 问题是我正在使用 dropzone,但它没有给我它的名称 :)
    • 打开inspect元素,查看文件html标签的name属性值,就可以使用了。
    • 遗憾的是 dropzone 不能以这种方式工作,它使用 javascript 和 jquery 来完成,不使用实际形式。
    【解决方案3】:

    试试:

    $files = File::files($temp);
    foreach ($files as $file)
    {
        File::move($file, $destination . basename($file));
        // [or]
        // rename($file, $destination . basename($file));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多