代码之家  ›  专栏  ›  技术社区  ›  Randall Flagg

使用HTML5和PHP加载多个文件

  •  8
  • Randall Flagg  · 技术社区  · 14 年前

    我正在尝试使用HTML5加载多个文件。 这是我在某个网站上找到的代码。 在PHP代码中,它无法将其识别为数组。

    我做错什么了吗?有人能给我看一个有效的解决方案吗?

    index.html索引

    <form action='save.php' method='post' enctype='multipart/form-data'>
    <input name="uploads" type="file" multiple="multiple" />
    <input type='submit' value="Upload File">
    </form>
    

    保存.php

    function GetFiles() {
            $files = array();
            $fdata = $_FILES["uploads"];
            if (is_array($fdata["name"])) {//This is the problem
                    for ($i = 0; $i < count($fdata['name']); ++$i) {
                            $files[] = array(
                                'name' => $fdata['name'][$i],
                                'tmp_name' => $fdata['tmp_name'][$i],
                            );
                    }
            } else {
                    $files[] = $fdata;
            }
    
            foreach ($files as $file) {
                    // uploaded location of file is $file['tmp_name']
                    // original filename of file is $file['file']
            }
    }
    
    3 回复  |  直到 14 年前
        1
  •  9
  •   Harmen    14 年前

    您需要对名称创建某种数组:

    <input name="uploads[]" type="file" multiple="multiple" />
    

    就像你以前使用复选框一样。

        2
  •  7
  •   dnagirl    14 年前

    [] ,否则PHP不会将其视为数组。所以:

    <form action='save.php' method='post' enctype='multipart/form-data'> 
    <input name="uploads[]" type="file" multiple="multiple" /> 
    <input type='submit' value="Upload File"> 
    </form> 
    

        3
  •  1
  •   Ivotje50    10 年前

    我知道这是一个旧线程,但我使用这个小脚本将$_FILES数组的(对我)混乱布局转换为更可读的形式。Name_input是您在HTML中为输入对象指定的任何名称。

    for($i=0; $i<count($_FILES['name_input']['name']); $i++) {
        $betterfiles[] = array(
            "name" => $_FILES['name_input']['name'][$i],
            "type" => $_FILES['name_input']['type'][$i],
            "tmp_name" => $_FILES['name_input']['tmp_name'][$i],
            "error" => $_FILES['name_input']['error'][$i],
            "size" => $_FILES['name_input']['size'][$i]
        );
    }