如何读取上传的CSV文件而不将其保存在PHP中

问题描述

基本了解我的文件如何以HTML上传

<form method="post" action="/admin/upload">
  <input type="file" id="csvFile" name="csvFile">
  <input type='hidden' value='{{$crsf}}' name='crsf_token'>
  <input type="submit">
</form>

我的路由如下所示(CRSF保护在执行路由功能之前就已完成):

Router::post('/admin/upload',function(Request $r) {

    $finfo  = new finfo(FILEINFO_MIME_TYPE);
    $file  &= $r->getFile('csvFile',array('csv')); // returns $_FILES based on MIME type(s).

    if(empty($file))
        $r->redirect(403); // Request to admin forbidden action
    
    $csv = fopen($file['csvFile']['tmp_name']);

    $filteredCols = [];
    while (false !== $fields = fgetcsv($csv))
        $filteredCols = array_values(array_interesect_key($fields,array_flip(array(1,2,9))));

    fclose($csv);

    var_export($filteredCols);

});

我遇到的问题是empty($file)返回true。我尝试var_dump($_FILES),但得到PostedArray(0) []。我的CRSF令牌跨过发布并且可以正常运行,所以为什么文件发布不正确?另外,我可以在此发布的文件上使用fopen还是首先要保存它? (不是首选选项)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)