如何在Laravel 5.1中将文件详细信息保存到DB中

时间:2016-03-10 19:43:37

标签: php laravel laravel-5.1

我正在尝试将上传文件的详细信息插入数据库表中,我收到以下错误:

  

致命错误:调用未定义的方法Symfony \ Component \ Finder \ SplFileInfo :: getClientOriginalName()

如何在Laravel5中获取文件的getClientOriginalName()getClientOriginalName()getFilename()

以下是我正在使用的代码。

public function add() 
{
  $directory = public_path('xml');

  $files = File::allFiles($directory);
  foreach ($files as $file) {
    $entry = new Xmlentry();
    $entry->mime = $file->getClientMimeType();
    $entry->original_filename = $file->getClientOriginalName();
    $entry->filename = $file->getFilename().'.'.$extension;
    $entry->save();
  }
}

1 个答案:

答案 0 :(得分:1)

我有点困惑为什么你在那里有getClientOriginalName(),因为它针对的是已上传的临时文件名,但File::allFiles()正在从已有的目录中获取文件固定名称。

除了上面的评论之外,我想补充一点,你可以使用SplFileInfo方法。

我冒昧地从代码中删除了原始文件名,并纠正了变量$extension的赋值语句的缺失。

回答你的问题:

public function add() 
{
  $directory = public_path('xml');

  $files = File::allFiles($directory);
  foreach ($files as $file) {
    $entry = new Xmlentry();
    $entry->mime = $file->getType();
    $entry->filename = $file->getFilename(). '.' . $file->getExtension();
    $entry->save();
  }
}