一键下载MySql上的所有文件 - PHP,HTML

时间:2017-04-04 08:44:20

标签: javascript php jquery html mysql

我刚学习Web 3周。我还没有学过PHP。所以我有一个PHP脚本下载文件的问题。

我想要的是:我将文件上传到mysql。我希望将所有文件按下1个按钮,并在下载时生成zip文件。

这是我的代码:

upload.php的

    <html>
    <body>
        <form method="post" enctype="multipart/form-data">
            <table width="350" border="0" cellpadding="1"
                   cellspacing="1" class="box">
                <tr>
                    <td>please select a file</td></tr>
                <tr>
                    <td>
                        <input type="hidden" name="MAX_FILE_SIZE"
                               value="16000000">
                        <input name="userfile" type="file" id="userfile"> 
                    </td>
                    <td width="80"><input name="upload"
                                          type="submit" class="box" id="upload" value=" Upload "></td>
                </tr>
            </table>
        </form>
    </body>
</html>

<?php
    if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {
        $fileName = $_FILES['userfile']['name'];
        $tmpName = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];
        $fileType = (get_magic_quotes_gpc() == 0 ? mysql_real_escape_string(
                                $_FILES['userfile']['type']) : mysql_real_escape_string(
                                stripslashes($_FILES['userfile'])));
        $fp = fopen($tmpName, 'r');
        $content = fread($fp, filesize($tmpName));
        $content = addslashes($content);
        fclose($fp);
        if (!get_magic_quotes_gpc()) {
            $fileName = addslashes($fileName);
        }
        $con = mysql_connect('localhost', 'root', '','demo') or die(mysql_error());
        $db = mysql_select_db('demo', $con);
        if ($db) {
            $query = "INSERT INTO upload (name, size, type, content ) " .
                    "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
            mysql_query($query) or die('Error, query failed');
            mysql_close();
            echo "<br>File $fileName uploaded<br>";
        } else {
            echo "file upload failed";
        }
    }
?>

的download.php

    <html>
    <head>
        <title>Download File From MySQL Database</title>
        <meta http-equiv="Content-Type" content="text/html; 
              charset=iso-8859-1">
    </head>
    <body>
        <?php
        $con = mysql_connect('localhost', 'root', '','demo') or die(mysql_error());
        $db = mysql_select_db('demo', $con);
        $query = "SELECT id, name FROM upload";
        $result = mysql_query($query) or die('Error, query failed');
        if (mysql_num_rows($result) == 0) {
            echo "Database is empty <br>";
        } else {
        ?> 
        <form action="phpdown.php" method="post">
            <input type="submit" name="someAction" value="GO" />
        </form>
        <?php
            while (list($id, $name) = mysql_fetch_array($result)) {?>               
                <a href="download.php?id=<?php echo urlencode($id); ?>"><?php echo urlencode($name); ?></a> <br>
        <?php
            }
        }
        mysql_close();
        ?>
    </body>
</html>
<?php
    if (isset($_GET['id'])) {
        $con = mysql_connect('localhost', 'root', '','demo') or die(mysql_error());
        $db = mysql_select_db('demo', $con);
        $id = $_GET['id'];
        $query = "SELECT name, type, size, content " . "FROM upload WHERE id = '$id'";
        $result = mysql_query($query) or die('Error, query failed');
        list($name, $type, $size, $content) = mysql_fetch_array($result);
        header("Content-length: $size");
        header("Content-type: $type");
        header("Content-Disposition: attachment; filename=$name");
        ob_clean();
        flush();
        echo $content;
        mysql_close();
        exit;
    }
?>

downall.php

    <?php
    function zipFilesDownload($file_names,$archive_file_name,$file_path)
    {
        $zip = new ZipArchive();
        if ($zip->open($archive_file_name, ZIPARCHIVE::CREATE )!==TRUE) 
        {
          exit("cannot open <$archive_file_name>\n");
        }
        foreach($file_names as $files)
        {
          $zip->addFile($file_path.$files,$files);

        }
        $zip->close();
        header("Content-type: application/zip"); 
        header("Content-Disposition: attachment; filename=$archive_file_name"); 
        header("Pragma: no-cache"); 
        header("Expires: 0"); 
        readfile("$archive_file_name"); 
        exit;
    }
    $fileNames=array('files/file1.docx','files/file1.pdf');
    $zip_file_name='myFile.zip';
    $file_path=dirname(__FILE__).'/';
    if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
    {
        zipFilesDownload($fileNames,$zip_file_name,$file_path);
    }
?>

非常感谢。 :d

0 个答案:

没有答案