2017-07-19 129 views
0

我有上传表单,我可以上传任何类型的文件并将其路径保存到数据库。如果不在数据库中保存任何相关信息,例如:filetype,filesize等,我可以获取这些信息,同时我可以循环显示结果并在页面上显示它们?使用Laravel在页面上加载时获取文件信息

这里是我试过到目前为止

public function fileUpload() 
{ 
    $allFiles = Documents::paginate(20); 

    $files = array(); 

    foreach ($allFiles as $file) { 

     $files[] = $this->fileInfo(pathinfo(public_path() . '/uploads/' . $file)); 
    } 

    return View::make('admin.files', [ 
     'files' => $files 
    ]); 
} 

public function fileInfo($filePath) 
{ 
    $file = array(); 
    $file['name'] = $filePath['filename']; 
    $file['extension'] = $filePath['extension']; 
    $file['size'] = filesize($filePath['dirname'] . '/' . $filePath['basename']); 

    return $file; 
} 

当我运行该页面是

ErrorException这是我得到的错误:文件大小():统计失败.....

这是做这件事的正确方法吗?

更新:dd($filePath['dirname'] . '/' . $filePath['basename']);回报

string(126) "/var/www/html/site/public/uploads/{"id":2,"document_path":"aut6MnADFrPZTz4TJf0Y.pdf","document_name":"Some title for the file"}" 
+0

什么是'$文件路径[ '目录名称']的输出。 '/'。 $文件路径[ '基本名']'?我看到另一个'$ filePath ['extension']'和'$ filePath ['filename']',我猜这些应该包含在路径中? – Clemenz

+0

我什至不能'dd'。只有这个错误出现 – Ivan

+0

甚至没有'$ file = array();'?否则,请用'dd()'将filestat行注释掉。 – Clemenz

回答

1

改变这一行

$files[] = $this->fileInfo(pathinfo(public_path() . '/uploads/' . $file)); 

$files[] = $this->fileInfo(pathinfo(public_path() . '/uploads/' . $file->document_path)); 
+0

现在路径看起来正确'string(58)“/var/www/html/site/public/uploads/aut6MnADFrPZTz4TJf0Y.pdf”'但仍然出现错误'filesize():stat仅在' – Ivan

+0

'dd($ filePath ['dirname']。'/'。$ filePath ['basename'])'看看它是否是正确的路径 –

+0

是的,路径是正确的'string(58)“/ var/www/HTML /网站/公/上传/ aut6MnADFrPZTz4TJf0Y.pdf“' – Ivan