我已经搜索了相当一段时间,没有看到可以解决我的问题的东西。我正在一个显示文件列表的页面上工作,当OnClick时,用户将被允许下载该文件。文件路径存储在MySQL中以允许下载。
目前我正在使用SQL查询的while循环来检索和显示(回显)文件。在MySQL使用存储在MySQL中的文件路径下载PHP OnClick文件
- LOGID =自动增量ID
- LOGDATE = DateTime值
fileLink存储在MySQL =文件路径(例如C:\ WWW \瓦帕\ file.txt的)
while ($row = mysql_fetch_array($result)) { $ID =$row['logID']; $date =$row['logDate']; $file =$row['fileLink']; echo $ID, ' '; echo $date, '<br/>'; }
所以在现在它显示了如下画面,
1 2014年1月25日9时33分27秒
2 2014-0 1-26 9时37分28秒
3 2014年1月27日9时38分09秒
我想提出这是“回声$日期”为超链接的日期和时间(我有这样的烦恼)这将允许用户点击下载文件。我有这是文件下载代码,
<?php
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
的问题是,当此下载代码的网页上,下载框出现在页面加载时向右走,并提供下载的文件的唯一选项“2014-01-27”,这是SQL while循环期间最后一次检索到的项目。
我已经读过下载代码应该放在另一个.php文件上,这个文件在需要的时候会被调用,但我是PHP新手,并且不知道如何去做。
主要是我的问题是,
- 如何使回荡项目与onclick事件的超链接触发下载。
- 如何将文件路径绑定到相应的回显项目,因为现在$ file将存储由于while循环而导致的最后一条记录的文件路径。
- 如果以上可行,并且下载代码位于另一个.php文件中,那么如何将相应的$ file变量值传递给该.php文件才能使该方法正常工作。
在此先感谢您并感谢您的帮助。
嗨大卫,谢谢你的详细解释。这真的很有帮助。它确实有效,但是有一个小问题。截至目前的显示是我上面用超链接所说的。当我选择我的最后一个下载文件“2014-01-27 09:38:09”时,下载弹出窗口完美工作。但是,当我选择其他2条记录时,它将加载download.php页面,文本分别显示C \:wamp \ www \ SCS \ Logs \ 2014-01-25.txt或26.txt。无论如何解决这个问题?再一次感谢你。 – Jethro
@Jethro:听起来好像是这些文件实际包含的内容,或者你的代码没有正确读取文件,而只是回应文件的名称而不是内容。我不确定是什么原因导致了这种情况(我的PHP非常生疏),但为了诊断它,您可能需要在'download.php'中放入一些日志语句来获取一些运行时调试信息。基本上要确保每个值都是你期望的值。 – David
嗨大卫,道歉,请忽略我的第一条评论。它正在工作完美,因为我刚刚创建了另一个日志文件进行测试。我认为前两个日志文件下载发生的问题是由于我在MySQL中手动输入了文件路径,而这些文件路径没有正确地转义并读取目录斜杠“\”。非常感谢你的帮助! – Jethro