2014-01-23 21 views
0

嗨,所以我想知道從哪裏開始上傳PDF到SQL數據庫。我試圖讓用戶可以上傳文件,然後點擊提交,並將該文件存儲在sql數據庫的單元格中。這是解決這個問題的正確方法嗎?我根本不需要解析PDF,我只需要能夠將其上傳並從數據庫中取出。謝謝!PHP:上傳一個PDF到SQL數據庫

+2

最好的方法是上傳文件到您的服務器上並將文件名存儲在數據庫中 –

+0

您有數據庫了嗎?如果是這樣,你是如何組織它的,即架構是什麼? – iX3

+0

你真的想在數據庫中存儲整個PDF?或者只是將pdf的路徑存儲在一個單元格中並使用該路徑在您的應用程序中訪問pdf? –

回答

1

您可以將PDF存儲在服務器上或數據庫中。 如果你需要它被存儲在數據庫中,使用以下命令:

$fileAsString = base64_encode(file_get_contents('PDF.pdf')); 
//now store $fileAsString in your database cell 

當你需要讀一遍,你用BASE64_DECODE();

+0

那麼用戶如何上傳文件,例如他們的桌面上有pdf文件。我只是使用表單來創建指向PDF的指針,然後當他們選擇附加,然後我會運行SQL查詢? – visualbasicNoob9000

+0

您將照常上傳文件。 PHP會爲你創建一個臨時文件,你可以讀入base64_encode()函數,然後取出該字符串並保存到數據庫中。 – Kovo

1

如果你真的想在數據庫中存儲的PDF(如BLOB),(假設MySQL的職能正在使用的數據庫接口)你可以做這樣的事情:

$store_pdf = mysql_query("INSERT INTO table (data) VALUES ('".mysql_real_escape_string(file_get_contents('/pdf/file/path.pdf'))."')"); 

注:

通常不考慮在數據庫中存儲BLOB。更好的方法是將文件移動到文件系統的某個位置,並將文件的路徑存儲在數據庫中而不是文件本身。

例如,

$path_to_pdf='/pdf/file/path.pdf'; 

mysql_query("INSERT INTO table (pdf_path) VALUES ('$path_to_pdf')"); 

&從表中獲取路徑後訪問pdf文件。

<?php 
$query=mysql_query("SELECT pdf_path FROM table"); 
$result=mysql_fetch_array($query); 
?> 
<a href="<?php echo $result['pdf_path']; ?>">Download PDF</a> 

請注意,mysql擴展現在已被棄用,將來會被刪除。您可以改用PDO功能。 (http://www.php.net/manual/en/book.pdo.php

+0

那麼用戶如何上傳文件,例如他們的桌面上有pdf文件。我只是使用表單來創建指向PDF的指針,然後當他們選擇附加,然後我會運行SQL查詢? – visualbasicNoob9000

+0

@ visualbasicNoob9000如果您要將PDF內容存儲在數據庫中,則不需要上傳文件。您只需閱讀文件內容並將其存儲在現場。但不推薦上傳文件並僅在數據庫表字段中存儲路徑(是的。運行SQL查詢) –