【问题标题】:Manipulate several files in PHP在 PHP 中操作多个文件
【发布时间】:2014-08-31 19:28:33
【问题描述】:

由于单个输入,我正在尝试从网络应用程序中的多个 .csv 导入数据,但我在处理 $_FILES 时遇到了困难。

我要做的就是根据文件名将文件分成两个数组。我无法在服务器上上传这些文件。

这是用于上传文件的表单页面中的输入:

<input type="file" name="file[]" id="inputrapports" accept=".csv" multiple="true"/>

在我的操作页面中,我正在这样做:

$files=$_FILES['file'];
$q=array();
$c=array();
foreach($files as $file){
    if(strtoupper(substr(str_replace(' ','',$file['name']),7,1))=="Q"){
        $q[]=$file;
    }else{
        $c[]=$file;
    }
}

不幸的是,它不起作用。所以我尝试了这个:

foreach($files['name'] as $f){
    echo $f; //I'm getting the name
}
foreach($files as $f){
    echo $f['name']; //I'm not
}

我可以使用上面显示的第一次尝试,但在这种情况下,我无法将文件的整个数组放入适当的数组中。

你能解释一下为什么这两次尝试给出不同的答案吗?

你能帮我找到解决办法吗?

提前致谢。

【问题讨论】:

  • $_FILES 的 var_dump 是什么?
  • 我用这个来避免每次都写 $_FILES['file']
  • 是的,我想是的,但是 var_dump($_FILES) 的输出会有所帮助。
  • 这里是:array(5) { ["name"]=> array(1) { [0]=> string(43) "Rapport Quotidien activité 09-07-2014.csv " } ["type"]=> array(1) { [0]=> string(8) "text/csv" } ["tmp_name"]=> array(1) { [0]=> string(23) "/srv/data/tmp/phphwWN6K" } ["error"]=> array(1) { [0]=> int(0) } ["size"]=> array(1) { [0]=> int(291) } }
  • 好的,我看到了问题...而不是预期的$_FILES['file'][0]['name'] php 构建$_FILES['file']['name'][0]

标签: php file input


【解决方案1】:

解决这个问题的肮脏方法是:

$files = $_FILES['file'];
for($i=0;$i<count($files['tmp_name']); $i++)
{
    echo $files['name'][$i];
}

另一种方法来自php documentation

function diverse_array($vector) { 
    $result = array(); 
    foreach($vector as $key1 => $value1) 
        foreach($value1 as $key2 => $value2) 
            $result[$key2][$key1] = $value2; 
    return $result; 
}

$files = diverse_array($_FILES["file"]);

然后继续你的第一个 foreach。

$q=array();
$c=array();
foreach($files as $file){
    if(strtoupper(substr(str_replace(' ','',$file['name']),7,1))=="Q"){
        $q[]=$file;
    }else{
        $c[]=$file;
    }
}

【讨论】:

  • 关于你的肮脏方式,我想你会写 echo $files['tmp_name'][$i];。但在这种情况下,我无法匹配字符串的第 7 个字符。
  • 可能是因为 Q 是第 9 个字符?
  • 不适用于str_replace(' ','',$file['name']),7,1
  • 无论如何,由于diverse_array 功能,它现在可以工作了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 2020-12-02
  • 2012-05-22
相关资源
最近更新 更多