[英]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 类型。
或者,您还可以将 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.