如何修改我的 PHP 和 HTML 代码以从 MySQL 下载文件
Posted
技术标签:
【中文标题】如何修改我的 PHP 和 HTML 代码以从 MySQL 下载文件【英文标题】:How to modify my PHP and HTML code to download file from MySQL 【发布时间】:2021-05-06 00:39:07 【问题描述】:我是编程初学者。我想让用户能够下载上传并保存在 mysql 数据库中的文件。我为这个问题搜索了很多,但我很困惑,还不能掌握逻辑。这是我到达的代码:
$filequery = "SELECT file,file_name,file_mimo FROM ticket WHERE id=:ticketID";
$filestmt = $connection->prepare($filequery);
$filestmt->bindParam('ticketID',$ticketID, PDO::PARAM_INT);
$filestmt->execute();
$filestmt->bindColumn(1,$file,PDO::PARAM_LOB);
$filestmt->bindColumn(2,$filename,PDO::PARAM_STR);
$filestmt->bindColumn(3,$type,PDO::PARAM_STR);
$filestmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: $type");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$filename."\"");
readfile($file);
那么我应该在我的 php 代码中添加什么以及要编写什么 html 代码来显示下载该文件的按钮? (非常感谢用代码回答)
【问题讨论】:
不建议将文件存储在db中,***.com/a/15560485/6293599 您到底有什么问题?该按钮将是标准获取或将其放入帖子的形式。你的程序也不输出任何数据。 如果您获取列,您将获得数据。$file
是路径还是实际文件数据?请check the documentation 使用随机函数。
$file 是一个实际的文件数据
readFile 希望您提供一个文件名,以便它可以从磁盘打开文件。就像 tadman 所说,如果您阅读过文档,您就会知道这一点。因此,如果$file
已经包含文件数据,正如你所说,那么就回显它。
【参考方案1】:
如果$file
已经包含数据,那么您应该可以直接将其转储:
echo($file);
请注意,readfile()
需要 文件路径 作为参数,因此将其作为参数输入二进制文件中纯属无稽之谈。
既然你在学习,就会犯错误,这是可以理解的,但这是完全可以避免的。 PHP 对你可能使用的每一个函数都有很好的文档,所以在使用它之前总是检查你是否正确使用了一个函数。在学习一门新的编程语言时,您几乎可以随时打开文档,以便您可以根据需要进行检查。
【讨论】:
【参考方案2】:您应该将文件保存在您的服务器上。为此,您必须先将文件上传到服务器,然后将下载链接保存在数据库中。然后您需要将数据库中的链接打印到下载按钮。要安全上传文件,您一定要检查它们的类型和大小。
A simple file upload example
This link contains a simple example for insert item to database
Here is a simple code on how to print data
【讨论】:
请不要链接到 w3schools。这是编程的“WikiHow”,造成了相当大的破坏,我们需要在这里花费大量时间来修复。 你说得对,但是这样的网站详细解释了许多主题并鼓励通过实验学习,所以我选择了这个。如果他真的想学习,他必须通过尝试来研究和学习。这些只是学习工具。此外,这些网站对初学者更有用,因为它们更简单地解释了主题。他也可以从官方的 PHP 站点学习它,但这对于第一级来说会非常困难。不过,感谢您的批评。我会更加小心 这个网站是关于学习的,任何有帮助的资源都值得鼓励。问题是 w3schools 弊大于利。在可行的情况下,尝试链接到现有的 Stack Overflow 答案。另一件需要注意的事情是,如果您的答案主要是链接,它可能应该是评论。答案应包括代码中的有效解决方案。以上是关于如何修改我的 PHP 和 HTML 代码以从 MySQL 下载文件的主要内容,如果未能解决你的问题,请参考以下文章
php [Php - Phpoffice Override]覆盖PHPOffice\PHPWord类以从HTML代码生成docx文件。当orde时,这个生成正确的数字
如何使用 PHP 编写类似 sql 的查询以从 BigQuery 获取数据