PHP初学者。文件上传成功但我的浏览器没有下载文件,而是读取文件。所以我推荐其他线程,发现下面的代码不起作用。我点击超链接下载时要下载文件。从MySQL数据库中选择路径。
$rows = mysqli_num_rows($result);
if($rows>0)
{
while($row = mysqli_fetch_assoc($result))
{
?>
<div> <?php echo $row['Object_Name'];?>
<a href="<?php
$file_url = $row['Object_Path'];
header('Content-Type: application/octet-stream');
header("Content-disposition: attachment; filename=\"".$row['Object_Name']. "\"");
readfile($file_url);
?>">Download</a><br>
</div>
<?php
}
}
答案 0 :(得分:2)
在名为download.php的分页中,有以下代码:
<?php
$filename = 'file.pdf';//this should be the name of the file you want to download
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'. basename($filename) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
?>
您的主页应该有一个指向下载页面的链接,如下所示:
<a href="download.php">DOWNLOAD</a>
请告诉我这是否适合您。
<强>编辑:强>
我之前的例子是下载pdf文件。如果要下载不同类型的文件,必须稍微修改几行。我建议您首先尝试使用之前的代码下载pdf文件,并在完成其他文件的测试之后。
要从数据库中检索路径,可以使用MySQL(PDO)。
$sqlStatement = "SELECT path FROM my_table WHERE some_id = ".$something;
/*if you are retrieving the path from the database,
you probably have a lot of different paths available
there, so only you know the criteria which will decide
which of the many paths it is that you choose to extract*/
$sqlPrepared = $connection->prepare($sqlStatement);
$sqlPrepared->execute();
$row_info = fetch($sqlPrepared);
$filename = $row_info['path'];// this would be the $filename = 'file.pdf'
//that was in the example above
如果您不确定如何连接到数据库,那么有很多在线解释MySQL的文章相对简单。
我希望有所帮助:)
答案 1 :(得分:0)
您必须使用两个单独的文件。
在链接页面中,您可以输出如下HTML:
<a href="http://www.example.com/download.php?file=1">Download file 1</a>
<a href="http://www.example.com/download.php?file=2">Download file 2</a>
<a href="http://www.example.com/download.php?file=3">Download file 3</a>
(...)
如果您愿意,可以使用<form>
。
然后,在 download.php :
中使用GET / POST参数选择适当的文件(上例中为$_GET['file']
);
发送适当的标题(如原始代码中所示);
回显您的文件(您可以使用readfile
);
强制:此脚本中没有其他输出!即使是一个额外的空间也会破坏下载的文件。