對於一家保險公司,我創建了各種保險應用程序的PDF表格。這些將在其網站上提供(完成時)。每個PDF格式的表格都與應用程序的打印版本非常相似。這個想法是,用戶在線填寫它,點擊表格底部的(可見但不可打印)「提交」按鈕,並將完整的PDF發送給公司。這樣他們可以打印出來,並繼續使用他們目前的紙質文件歸檔系統。將整個PDF表格提交給PHP腳本
我嘗試使用提交按鈕的「mailto:...」URL,但這需要一個外部郵件程序。它也給附加的PDF一個隨機的臨時文件名。
因此,我想發送PDF到一個PHP腳本,更改名稱,並從那裏通過電子郵件發送給公司。我玩了一下,我可以到達目的地腳本,但我不知道PDF會發生什麼。我希望它顯示在$ _FILES中,但沒有。
保存到數據庫不是一個選項。
在準備PDF表單時,您可以選擇要如何提交:作爲HTML表單(如Sepodati所述),作爲XML數據,作爲FDF(僅發送數據,並且在顯示時會打開原始PDF數據),或作爲完整的PDF。爲了方便網站所有者(不具備計算機能力)使用,我將向他們發送完整的PDF,以供他們打印。
所以,同樣的問題仍然存在:當我到達我的目標腳本時,我的PDF文件到達哪裏?
我通過PDF上的提交按鈕提交PDF。您必須熟悉PDF表單才能理解這一點。對於URL,我放置了目標PHP腳本。
在我的目的地的腳本,我嘗試以下 PHP代碼:
reset ($_FILES);
while (list ($key, $val) = each ($_FILES)) {
echo "$key => $val<br />\n";
}
我這樣做是爲了_FILES $,$ _GET,$ _ POST和$ _REQUEST。沒有出現,就好像每個陣列都是空的。不過,我可能做錯了。
我把phpinfo()函數在腳本中,而這些增值經銷商出現相關PDF ...
_SERVER["CONTENT_LENGTH"] = 37722
_SERVER["CONTENT_TYPE"] = application/pdf
_SERVER["HTTP_USER_AGENT"] = Mozilla/4.0 (compatible; Adobe Acrobat Control Version 5.00 for ActiveX)
_SERVER["REQUEST_METHOD"] = POST
內容長度大約是PDF的大小。
別的東西,我以前沒注意到的是,在提交時,Internet Explorer顯示此頁面(或像它的名稱):
C:\WINDOWS\TEMP\pa003773.html
本頁面包含了所有從我的腳本輸出。
[在POST請求的情況下,最好使用'PHP://的代替input''$ HTTP_RAW_POST_DATA'因爲它不依賴於特殊的* php.ini *指令。](http://php.net/manual/en/wrappers.php.php)。這也可以讓你使用['stream_copy_to_stream()'](http://php.net/manual/en/function.stream-copy-to-stream.php),這個內存密集程度要低得多。 – DaveRandom 2012-07-10 19:21:08