Загрузить несколько текстовых файлов в MySQL - PullRequest
0 голосов
/ 18 декабря 2011

У меня есть опыт программирования загрузки файлов через браузер ZERO, так что эта часть для меня совершенно новая.

Мне нужно предоставить пользователям (фактически они будут только одним или двумя авторизованными пользователями) способ загрузки нескольких текстовых файлов (например, 50-200 файлов) непосредственно в базу данных MYSQL.

Я не хочу предоставлять им доступ по FTP, но я в порядке, позволяя им вводить файлы в базу данных.

Я могу понять, как получить данные из массива PHP в базу данных MYSQL.

Что я не могу понять, так это как получить содержимое нескольких файлов в массив (ы) PHP.

Пожалуйста, помогите с кодом.

Ответы [ 4 ]

3 голосов
/ 18 декабря 2011

Этот пример должен помочь вам понять основную идею

<?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] содержит первый текстовый файл и т. Д.

3 голосов
/ 18 декабря 2011

Просто добавьте больше <input type="file"> s на вашу страницу, и они все появятся в массиве $_FILES, который вы можете зациклить, чтобы получить их.

Однако:

См. также: Обработка нескольких загрузок файлов в PHP .

1 голос
/ 18 декабря 2011

Спасибо всем, кто внес свой вклад в это. Мне очень трудно выбрать ответ, потому что я думаю, что это усилие 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>";

    }
}
?> 
1 голос
/ 18 декабря 2011
<code><!-- 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 '
';}?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...