簡體   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