【问题标题】:uploading file using multiple & php使用多个 & php 上传文件
【发布时间】:2013-12-09 18:39:11
【问题描述】:

我正在尝试使用以下代码上传文件:

    echo "<form method='POST' action='uploadfile.php?action=addok' enctype='multipart/form-data'>
        <input type=\"file\" multiple=\"true\" name=\"userfile[]\"  />
            <input type='submit' value=' add '>
            </form>";

    if ($_GET['action'] == 'addok') {

      echo "\$_FILES['userfile']=".count($_FILES['userfile'])."<br />\$_FILES['userfile']['name']=".count($_FILES['userfile']['name'])."<br />\$_FILES=".count($_FILES)."<br />";
    }

它只为所有计数返回 0。 如果我只上传 1 个,它会返回计数,否则 .. 什么都没有 .. 我从昨天开始就在尝试解决它的问题。 有人可以帮忙吗?

【问题讨论】:

  • 改为var_dump($_FILES) 看看里面有什么。当您进行多个同名上传时,PHP 有一些关于如何构建 $_FILES 的真正愚蠢的想法。
  • 以上方法是什么?
  • 我猜你的returns 0 是因为你试图一次上传多个文件。如果是这种情况,那么您将需要一个foreach - “它只返回 0 表示 all 计数。如果我只上传 1 个”
  • 我的意思是下面:),我早上写了第一行代码,当时我在我的问题之前写了代码,忘记仔细检查了。
  • @fred-ii- 我只是没有运气,同样的问题..

标签: php upload count


【解决方案1】:
    if ($_GET['action'] == 'addok') {

        foreach($_FILES['userfile'] as $key=>$val){

              print_r($val);
        }
    }

【讨论】:

  • 你试过这个var_dump($_FILES['userfile']);
  • 多上传时,返回NULL
  • 您是否选择了文件并点击了添加按钮?
【解决方案2】:

您正在计算 $_FILES,它始终为 1:

尝试:

echo "<form method='POST' action='uploadfile.php?action=addok' enctype='multipart/form-data'>
            <input type=\"file\" multiple=\"true\" name=\"userfile[]\"  />
                <input type='submit' value=' add '>
                </form>";

        if ($_GET['action'] == 'addok') {
          echo "<pre>";
            print_r($_FILES);
            echo "</pre>";
          echo "\$_FILES['userfile']=".count($_FILES['userfile'])."<br />\$_FILES['userfile']['name']=".count($_FILES['userfile']['name'])."<br />\$_FILES=".count($_FILES['userfile']['name'])."<br />";
        }

print_r:

Array
(
    [userfile] => Array
        (
            [name] => Array
                (
                    [0] => file1.txt
                    [1] => file2.txt
                    [2] => file3.txt
                )

            [type] => Array
                (
                    [0] => text/plain
                    [1] => text/plain
                    [2] => text/plain
                )

            [tmp_name] => Array
                (
                    [0] => C:\wamp\tmp\php1F5C.tmp
                    [1] => C:\wamp\tmp\php1F5D.tmp
                    [2] => C:\wamp\tmp\php1F5E.tmp
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                )

            [size] => Array
                (
                    [0] => 0
                    [1] => 0
                    [2] => 0
                )

        )

)

结果:

$_FILES['userfile']=5
$_FILES['userfile']['name']=3
$_FILES=3

【讨论】:

  • 也不起作用..返回:Array ( ) $_FILES['userfile']=0 $_FILES['userfile']['name']=0 $_FILES=0 自己尝试一下:hussein.be/tst.php 也在本地主机上不起作用..
  • 如果我选择 1 个文件,它工作正常,如果我选择超过 1 个文件,$_FILES 为空..
【解决方案3】:

检查你的 php.ini,函数 max_file_uploads() 的值应该大于 1

那就试试这个,

    <form method="post" action="uploadfile.php?action=addok" enctype="multipart/form-data">
    <input type="file" name="userfile[]" multiple>
    <input type="submit" value="UPLOAD">
    </form>

    $folder = “/home/username/www/uploading/”;
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name']))  {   
    if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $folder.$HTTP_POST_FILES['userfile']['name'])) {
         Echo “File uploaded”;
    } else {
         Echo “File not moved to destination folder. Check permissions”;
    };
} else {
     Echo “File is not uploaded.”;
}; 

您需要确保您的上传文件夹具有正确的权限。 chmod -R 777 更改权限,以便 php 可以上传到该文件夹​​。

需要注意的是,IE http://caniuse.com/#feat=fileapi

HTML5 input type file's multiple attribute not working in IE?

【讨论】:

  • 你检查你的权限了吗?
  • 是的,我也在我的本地主机上试过。什么都没有..正如我在其他帖子中提到的,它仅适用于单个文件。!
  • 从输入中删除多个并尝试。然后再添加 2 个输入字段的副本,看看它是否适用。
  • 你检查过你的php.ini吗,函数max_file_uploads()的值应该大于1。
  • 设置为 20 . 并且代码适用于单次上传,但不适用于多个..
【解决方案4】:

解决方案::

看来问题不在代码中,而是在浏览器中。

由于插件或我认为的其他问题,它无法在 firefox、opera 或 chrome 中运行。

我确实在安全模式 click shift + firefox icon to open in safe mode 下运行了 firefox,它工作正常。

这是万一有人再次遇到同样的问题。

注意: 如果有人知道如何检测此问题并警告用户,请成为我的热情:)

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多