繁体   English   中英

如何在 MySQL 数据库中存储 PDF 文件?

[英]How to store a PDF file in MySQL database?

如何使用 PHP 在 MySQL 数据库中存储 PDF 文件?

使用 BLOB(二进制大对象)( longblob数据类型)

$fileHandle = fopen($fileUpload, "r");
$fileContent = fread($fileHandle, $fileUpload_size);
$fileContent = addslashes($fileContent);
$dbQuery = "INSERT INTO myBlobs VALUES ";
$dbQuery .= "('$fileContent')";

完整的教程在这里

但强烈建议将文件存储在文件系统上,只需在数据库中添加一个引用(包含文件路径和名称的字段)。 几个原因:

  • 更快
  • 更容易访问(不需要任何特殊应用程序)
  • 更快的备份
  • 更少的空间

使用类型BLOB

这是PHP 中示例

正如其他人提到的,您可以使用 BLOB 类型。

或者,您还可以将 PDF 保存在文件系统中,并将其相关链接保存到数据库中。 这与适用于保存诸如缩略图和其他数据类型之类的内容的原则相同,这些内容可能对用户来说是唯一的,并且在资源方面是昂贵的。

如果您只是想在您的服务器上存储上传的 PDF 文件,更常见的是将文件复制到具有唯一文件名的给定目录,并将该文件的完整路径存储在您的 MySQL 表中。

如果您确实希望将文件的完整二进制数据存储在您的 MySQL 数据库中,那么您将需要做更多的工作来将二进制数据放入 MySQL 的 BLOB 字段中,然后在你稍后再把它拉出来。

您可能不仅要在 MySQL 表中存储文件的二进制数据,还要存储文件名、文件类型,甚至可能是文件的大小(用于在您的网页上列出)。 您可能需要一张桌子,例如;

CREATE TABLE files (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  filename VARCHAR(128) NOT NULL,
  mimetype VARCHAR(64) NOT NULL,
  data MEDIUMBLOB NOT NULL
);

在你的 PHP 中,你可以插入一个上传的文件,如下所示;

$filePointer = fopen($_FILES['fileUpload']['tmp_name'], 'r');
$fileData = fread($filePointer, filesize($_FILES['fileUpload']['tmp_name']));
$fileData = addslashes($fileData);
$sql = "INSERT INTO files (filename, mimetype, data) VALUES( $fileName, $fileType, $fileData )";

再次取出文件将需要一个专用脚本来选择适当的文件,然后使用一系列“标题”命令将该文件以浏览器知道如何处理的形式推送回浏览器。

您可以在此处阅读有关此内容的完整教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM