Php 将多个文本文件上载到MySQL

Php 将多个文本文件上载到MySQL,php,mysql,file,upload,Php,Mysql,File,Upload,我没有通过浏览器上传文件的编码经验,所以这部分对我来说都是全新的 我需要给用户(事实上,他们只有一两个授权用户)一种方式,将多个文本文件(比如50-200个文件)直接上传到MYSQL数据库中 我不想给他们FTP访问权限,但我可以允许他们将文件输入数据库 我可以找出如何将数据从PHP数组中获取到MYSQL数据库中 我不知道如何将多个文件的内容放入PHP数组中 请在代码方面提供帮助。只需在页面中添加更多的s,它们都将出现在数组中,您可以循环检索它们 然而: 当涉及多个文件时,$\u FILES数组

我没有通过浏览器上传文件的编码经验,所以这部分对我来说都是全新的

我需要给用户(事实上,他们只有一两个授权用户)一种方式,将多个文本文件(比如50-200个文件)直接上传到MYSQL数据库中

我不想给他们FTP访问权限,但我可以允许他们将文件输入数据库

我可以找出如何将数据从PHP数组中获取到MYSQL数据库中

我不知道如何将多个文件的内容放入PHP数组中

请在代码方面提供帮助。

只需在页面中添加更多的
s,它们都将出现在数组中,您可以循环检索它们

然而:

  • 当涉及多个文件时,
    $\u FILES
    数组的结构有点不合逻辑-请务必小心,这有点违反直觉
  • 确保您的、和PHP.ini指令足够慷慨

另请参见:。

此示例将帮助您理解基本思想

<?php
$fileContents = Array();

if(count($_FILES) != 0){
    foreach($_FILES as $file){
        $fp = fopen($file["tmp_name"], "r");
        array_push($fileContents, fread($fp, $file["size"]));
        fclose($fp);
    }

    //$fileContents now holds all of the text of every file uploaded
}
?> 


<html>
<head>
</head>
<body>
    <form action="test.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file1" id="file" />
    <input type="file" name="file2" id="file" />
    <input type="submit" name="submit" value="Submit" />
    </form>
</body>
</html>

它首先检查是否有文件发布到它自己。 如果存在文件,它将循环遍历每个文件,并在它们处于临时文件状态时打开它们。 之后,它使用随附的size属性一次读取所有内容(注意这一点)。 同时,它将内容推送到名为$fileContents的数组中。 因此$fileContents[0]保存第一个文本文件,依此类推。


<!-- FORM -->
<form method="post" enctype="multipart/form-data">
<?php
for($i=1;$i<=10;$i++) //change 10 to any number for more upload fields
{
    echo '<input type="file" name="files[]" /><br />';
}
?>
<input type="submit" name="submit" value="Submit" />
</form>


<?php
//Processor
if(isset($_POST['submit']))
{
    foreach($_FILES['files']['tmp_name'] as $tmp_name)
    {
        if(!empty($tmp_name))
        {
            $filecontent[] = file_get_contents($tmp_name);
        }
    }

//Test
echo '<pre>';
print_r($filecontent);
echo '</pre>';
}
?>

感谢所有对此做出贡献的人。我很难选择答案,因为我认为这是John和DaveRandom的一半努力

如果有人想在这里看到最终产品,它是:

HTML:


PHP:


到目前为止你有什么?我什么都没有。就像我说的,我没有编写上传部分的经验。换句话说,我需要接口的代码来上传多个文件,以及php文件中生成包含文本的数组的部分。我从那里很好,链接非常有用。有没有一种方法可以在文件选择器中执行shift键单击,这样您就可以简单地从单个链接中选择多个文件?这将取决于浏览器,而不是您的编码-理论上,HTTP提供了这种可能性,但我不认为它实现得太多(事实上,我不认为我见过它)-你可能想研究一些类似AJAX风格的上传程序,比如@UnoMeinAme,我只是在玩它,无论我做什么,我都不能让IE8或IE9让我选择多个文件,如果IE不支持它,这基本上意味着你不能这样做-即使其他浏览器支持它,由于不支持IE,你失去了大部分的听众。我想我可以让这两个用户使用我告诉他们使用的任何浏览器。所以,我根本不关心兼容性或可伸缩性。只要能用一个浏览器(最好不是IE)完成,我会很高兴的。你看,点击200个按钮上传200个文件仍然是一件痛苦的事…@UnoMeinAme不幸的是,这绝对是一个WWW目前无法让生活变得轻松的地方——HTML5解决了这个问题,但并没有得到广泛的实施,如果你能强迫你的用户使用浏览器,你可能会从中得到一些有用的东西。大多数实现这类功能的网站目前都使用Flash和Java等工具,因此这也可能是一条你可以参考的途径——谷歌将是最好的起点(但前提是你已经知道一些你选择的语言),这在文件到数组方面是完美的。谢谢,没问题,如果你有任何问题,请发到这里
<html>
<head>
</head>
<body>
    <form method="post" action="test.php" enctype="multipart/form-data">
        <input name="filesToUpload[]" id="filesToUpload" type="file" multiple="" />
        <input type="submit" name="submit" value="Submit" />
    </form>
</body>
</html>
<?php
    function rearrange( $arr ){
        foreach( $arr as $key => $all ){
            foreach( $all as $i => $val ){
                $new[$i][$key] = $val;    
            }    
        }
        return $new;
    }

$fileContents = Array();

if(count($_FILES['filesToUpload'])) {
    $realfiles=rearrange($_FILES['filesToUpload']);

    foreach ($realfiles as $file) {
            $fp = fopen($file["tmp_name"], "r");
            array_push($fileContents, fread($fp, $file["size"]));
            fclose($fp);
    }

    foreach ($fileContents as $thisone) {
        echo "<textarea wrap='off'>\n";
        echo $thisone;
        echo "</textarea>\n";
        echo "<br>----<br>";

    }
}
?>