将多个文本文件上传到MySQL

时间:2011-12-17 21:26:24

标签: php mysql file upload

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

我需要向用户(实际上他们只有一两个授权用户)提供一种将多个文本文件(想想50-200个文件)直接上传到MYSQL数据库的方法。

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

我可以弄清楚如何将PHP数据中的数据导入MYSQL数据库。

我无法弄清楚如何将多个文件的内容放入PHP数组中。

请帮忙解决问题。

4 个答案:

答案 0 :(得分:3)

只需在页面中添加更多<input type="file">,它们就会显示在$_FILES数组中,您可以循环检索它们。

然而:

另请参阅:Handling multiple file uploads in PHP

答案 1 :(得分:3)

这个例子可以帮助你理解基本的想法

<?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]保存第一个文本文件,依此类推。

答案 2 :(得分:1)

<!-- 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>';
}
?>

答案 3 :(得分:1)

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

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

HTML:

<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:

<?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>";

    }
}
?>