【问题标题】:Download File From MySQL DB从 MySQL 数据库下载文件
【发布时间】:2013-03-20 01:09:37
【问题描述】:

我似乎无法在线下载我要上传到 MySQL 数据库的文件,我只能得到纯文本,主要是模糊的标志。在 localhost 虽然下载没问题。我在线检查了我的数据库,并且在本地都在上传表中上传得很好。我先给大家看一下Upload.php(实际不是这么叫的,这也不是整个脚本,是个大脚本):

if (isset($_POST['verstuur'])) {
$id = NULL;
if($_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$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, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Fout, query mislukt'); 
$query = "SELECT LAST_INSERT_ID() ID";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row['ID'];
}

}

好的,我有另一个脚本来创建下载链接:

$query = "SELECT U_ID, name FROM upload WHERE U_ID = '$opvraag[U_ID]'";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
 echo "<td>Geen Bijlage</td>";
} 
else
{
 while(list($id, $name) = mysql_fetch_array($result))
 {
     echo '<td><a href="download.php?id='.$opvraag['U_ID'].'">'.$name.'</a></td>';
 }
}

最后我下载了.php

if(isset($_GET['id'])) 
{
$id    = $_GET['id'];
$query = "SELECT name, type, size, content " .
     "FROM upload WHERE U_ID = '$id'";
$result = mysql_query($query) or die('Fout, query mislukt');
list($name, $type, $size, $content) =  mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo stripslashes($content);
exit;
}

数据库表:
名称: 类型:
U_ID int(8) AUTO_INCREMENT
名称 varchar(255)
大小 int(8)
输入文字
内容块

【问题讨论】:

  • 向我们展示您的数据库表
  • 我建议你先做一些调试,然后告诉我们究竟你的问题出在哪里。
  • @RohitKumarChoudhary 数据库表已添加
  • @Jocelyn 确切的问题是,当我点击生成下载链接的网址时,我无法下载上传的文件,而是在另一个网页中打开
  • 你说它在本地主机上工作,你有没有检查过设置标题之前你可以var_dump你的列表变量

标签: php mysql upload download


【解决方案1】:

您能否尝试将您在 download.php 中对 headers() 的 3 次调用替换为:

    header("Accept-Ranges: bytes");
    header("Keep-Alive: timeout=15, max=100");
    header("Content-Disposition: attachment; filename=$name");
    header("Content-type: $type");
    header("Content-Transfer-Encoding: binary");
    header( "Content-Description: File Transfer");

【讨论】:

  • 没用,虽然没有在线测试它也在本地并且它在那里工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 2018-02-04
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多