簡體   English   中英

PHP 通過下載和查看文件上傳到 MySQL 數據庫

[英]PHP upload to MySQL database with download and view file

未正確下載:無法打開鏈接。 幫助表示贊賞。 我是 PHP 和 MySQL 的新手。 我已將 MySQL 的內容設置為 BLOB,但我不知道如何更清楚,我可以在 url 中看到具有相應 id 到文件內容 $id 的文件的鏈接,但是當我單擊鏈接什么也沒有打開,我希望能夠在布朗瑟中打開文件。 我打算能夠打開 .zip 文件並在以后的開發中提取。 就安全而言,請也詳細解釋一下,以便我學習。 我看到我的代碼是 mod,但仍然無法在數組鏈接中工作。

UPLOAD.PHP :

<?php 
$dbname="upload";
$host="localhost";
$user="SELF";
$pass="PICME";
$link = mysql_connect($hostname, $user, $pass);
mysql_select_db($dbname, $link);
?>
<form method="post" enctype="multipart/form-data">
   <table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
      <tr> 
         <td width="246">
            <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
            <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>
<?php
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileType = $_FILES['userfile']['type'];
$fileSize = $_FILES['userfile']['size'];
$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
$query = "INSERT INTO upload (name, type, size, content) ".
"VALUES ('$fileName', '$fileType', '$fileSize', '$content')";
mysql_query($query) or die('Error, query failed'); 
echo "<br>File $fileName uploaded<br>";
} 
?>'
(DOWNLOAD.PHP)FILE
'<?php
$dbname="upload";
$host="localhost";
$user="SELF";
$pass="PICME";
$link = mysql_connect($hostname, $user, $pass);
mysql_select_db($dbname, $link);
$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
{
while(list($id, $name) = mysql_fetch_array($result))
{
?>
<a href="download.php?id=<?php echo urlencode($id);?>"><?php echo urlencode($name);?></a> <br>
<?php 
}
}
exit;
?>
<?php
$dbname="upload";
$host="localhost";
$user="SELF";
$pass="PICME";
$link = mysql_connect($hostname, $user, $pass);
mysql_select_db($dbname, $link);
$query = "SELECT id, name FROM upload";
if(isset($_GET['id'])) 
{
// if id is set then get the file with the id from database
$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);
$content = $row['content']; 
header("Content-Disposition: attachment; filename=$name");
header('Content-type: image/jpeg' . $type); // 'image/jpeg' for JPEG images
header('Content-Length:' . $size);
exit;
print $content;
ob_clean();
flush();
echo $content;
}
?>

您似乎沒有在上傳時驗證文件的 Mime 類型,並在下載時為 JPEG 設置 Mimetype。 請確保您上傳的文件格式正確。 此外,id 是 urlencoded 但在從 DB 檢索時未解碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM