2014-12-08 103 views
-2

下载以前上传到数据库的文件时出现问题,而不是下载计算机下载的“download.php”文件,该文件是要下载的脚本。我使用某种标识符,如'download.php?id = 1'来选择和下载特定文件,是的,我知道这个代码可能被弃用,并且不安全。PHP,MySQL - 无法从数据库下载上传的文件

这是我的download.php类型:

<?php 
session_start(); 
include("connect.php"); 
$namatemp=$_SESSION['nama']; 
$nistemp=$_SESSION['nislogin']; 
$kelastemp=$_SESSION['kelas']; 
$mapeltemp=$_SESSION['mapeltemp']; 
$chapteridtemp=$_SESSION['chapteridtemp']; 

$query=("SELECT mime, name, size, data FROM file WHERE uploader='$namatemp' AND chapter='$chapteridtemp')"); 
$result=mysql_query($query); 
$row=mysql_fetch_array($result); 
if($row=1) { 
header('Content-Type: '.$row['mime']); 
header('Content-Length: '.$row['size']); 
header('Content-Disposition: attachment; filename='.$row['name']); 
echo $row['name']; 
} else { 
    echo "You have not uploaded such file."; 
} 
?> 
+0

你不输出文件 – 2014-12-08 02:47:38

+0

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – esqew 2014-12-08 02:49:13

+1

plus尝试删除多余的'chapter ='$ chapteridtemp')'查询中的右括号。 if($ row = 1){'赋值而不是比较 – Ghost 2014-12-08 02:49:28

回答

0

您可能要添加:

readfile($row['name']); 

然而,我想你最好在页面中检查该文件存在重定向到一个下载页面,如果它不存在,则打印该错误,因为我不太确定头部是否可以嵌套在if语句中。当然,我可能是错的,因为这样说而得到低估。

+0

看看[鬼的评论](http://stackoverflow.com/questions/27350609/php-mysql-trouble-downloading-uploaded-file-from-database#comment43155627_27350609),然后再看OP的代码,*非常仔细* 。 – 2014-12-08 02:55:20

+0

@ Fred-ii- Thankyou。我会看看它。 – Verhaeren 2014-12-08 02:57:21

+0

不客气。 – 2014-12-08 03:00:18