通过数据库为图像创建上传/下载功能

时间:2016-01-01 08:08:52

标签: javascript php html mysql mamp

我已经在这4天了。但由于我对编码很陌生,我建议先在这里问一下,因为我会节省很多时间从有经验的编码员那里获得帮助。有人告诉我这可能需要20分钟。这是有帮助的,因为我的截止日期是今晚。而且我还没弄清楚究竟发生了什么。

目标允许从adminpg.html页面上传图片,以便从adminpg.html和userpg.html页面查看和下载。并且要将这些图像存储在数据库中(我正在使用MAMP,但对如何使我的代码正确连接到我的MAMP数据库几乎没有经验/理解)

upload.php:http://scratchpad.io/absent-boot-2909

adminpg.html:http://scratchpad.io/hesitant-visitor-5291

userpg.html代码:(因为我无法发布更多链接)

<head>
    <meta charset="utf-8">
    <title>-=The Portfolio Website=-</title>
     <link rel="stylesheet" type="text/css" href="../css/stylesheet.css">
            </head>
    <body>
        <header id = "MainHeader">
               <h1>Viewing / Download page</h1>

            <nav>

            <ul>
                <li>
                    <a href="../index.html">Home</a>
                </li>
                <li>
                    <a href="pages/about.html">About Me</a>
                </li>
                <li>
                    <a href="pages/contact.html">Contact</a>
                </li>
                </ul>
            </nav>
            </header>
        <main>


            <button type="button" style = "position:absolute; top:400px; left:50%; transform:translate(-50%); transform:scale(3,3);">Download Entire Folio</button>

            <div>   <img src="../images/SC.jpg" alt="Cover Image"> 
            <p>
                This page is where you can access all the softcopy files of my folio.</p>
        </main>
        <footer>
            <ul>
            <li>
                <a href="http://www.instagram.com">INSTAGRAM</a>
                </li>
                <li>
                <a href="http://www.facebook.com">FACEBOOK</a>
                </li>
                <li>
                <a href="mailto:someone@yoursite.com">EMAIL</a>
                </li>
            </ul>
            <p>&copy; 2015 Designed by Julian</p>
        </footer>
    </body>

如果有人能帮助我弄清楚我在哪里出错了,我会永远感激。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

我会告诉你我的所作所为。这是一个工作代码,你的图像将上传到我的php项目目录中名为'upload'的文件夹中,链接将被添加到数据库中,然后,我显示用户的链接,以便他们可以下载任何类型文件,不仅是图像,如果这是你想要的,这是我的代码: 这是在PHP-PDO中:单击我的提交按钮时,我的文件名称及其保存位置的链接取自HTML表单,如果上传到文件夹成功,则会将其添加到数据库中。

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if(isset($_POST['submit_map'])){
    $name = isset($_POST['name_of_map']) ? $_POST['name_of_map'] : '';
        $message='';
        $path = "../uploads/".$_FILES['file']['name'];
        try{




                $ext = pathinfo($path, PATHINFO_EXTENSION);
                if(move_uploaded_file($_FILES["file"]["tmp_name"], $path)){
                    //$path = "./uploads/".$path;
                    $sql = "INSERT INTO maps(name_of_map, projects_id, map) VALUES (:name, :id, :file)";
                    $stmt = $conn->prepare($sql);
                    $stmt->bindValue(":name", $name);
                    $stmt->bindValue(":id", $id);
                    $stmt->bindValue(":file", $path);
                    $count = $stmt->execute();
                    //var_dump($_FILES);
                    //die();
                    header("location: maps.php?id=".$id);
            }
        }
        catch(PDOException $e) {
            echo $e->getMessage();
            var_dump($_FILES);          
            header("location: insert_map_false.php?id=".$id);

        }
                    unset($_POST['submit_map']);
    }
}
?>

然后下载: 将此代码保存到新的PHP文件中,我将其命名为download_PopUp.php

<?php
$data = $_REQUEST['data'];
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
//header("Content-disposition: attachment; filename=\"" . basename($data) . "\"");
header("Content-disposition: attachment; filename=\"" . basename($data) . "\"");
readfile($data);
?>

这是我的HTML代码,其中显示了下载文件的链接:

<?php
$sql_map = "SELECT * FROM maps WHERE projects_id = :id_m";
$stmt_map = $conn->prepare($sql_map);
$stmt_map->bindValue(":id_m", $id);
$count_m = $stmt_map->execute();
$result = $stmt_map->fetchAll();
?>
<form action="" name="show_maps" method="post" enctype="multipart/form-data">
<table border="1" cellpadding="2" cellspacing="1" align="center" dir="rtl">
<th bgcolor="#666666" align="center">
الخريطة
</th>
<td>
<?php foreach ($result as $map) { 
    $data = $map['map'];
    $dataFile = str_replace('/', '\\', $data);
?>
<tr align="center">
<td>
    <?php if($map['name_of_map']==''): ?>
   <a href='download_PopUp.php?data=<?php echo $dataFile; ?>'><?php echo $dataFile?></a>
   <?php else: ?>
   <a href='download_PopUp.php?data=<?php echo $dataFile; ?>'><?php echo $map['name_of_map']?></a>
   <?php endif; ?>
<?php } ?>
</td>
</tr>
</tr>
</table>
</form> 

如果您发现使用JavaScript时遇到困难,我希望这对您有所帮助。