所以我一直在网上寻找几个小时的我认为是一个非常简单的答案,但我似乎找不到它。
我试图了解PDF表单如何提交的工作方式。我的目标是阅读从我在PHP脚本中设置的PDF表单提交的表单数据。我希望我的PHP脚本解析表单数据并将其插入我的SQL数据库。
我遇到的障碍是如何接收文件以便解析?
提交的文件的文件名是什么?
我在PDF表单上有我的提交按钮设置,可以将其导出以FDF,HTML或XFDF导出,但我只是想将数据输入字符串或以某种方式将内容输送到PHP中知道如何。
如果我尝试:
$ filefrompdf = file_get_contents('file.txt',true);
我仍然需要文件的名称,我不知道从PDF表单提交的文件的名称。如何获取此文件的名称?是文件还是XML行?如果只是XML线,我该如何收到此?
任何帮助将不胜感激,或者如果有人可以将我指向正确的方向。
我想我终于找到了答案。我使用了此代码:
$ post_body = file_get_contents('php://input');
我能够得到一个字符串。
如果有人知道更好的方法,我全都是耳朵。谢谢!
function ArrayFromHttpPut() { # assume a simple PUT, like a PDF form submission
$arrRtn = array(); # init result
$strInp = file_get_contents('php://input'); # PUT data comes in on StdIn, not in GET
$arrInp = explode("rn", $strInp, 2); # break input into array by only the first CrLf
$strBnd = $arrInp[0]; # first line of input is content boundary
$strInp = $arrInp[1]; # proceed with remainder of input
$arrInp = explode($strBnd, $strInp); # break input into array by content boundary
foreach ($arrInp as $idxInp => $strInp) { # scan input items
$arrItm = explode("rnrn", $strInp, 2); # break each item into array by only the first double-blank line
$arrItm[0] = trim($arrItm[0]); # drop spurious leading and trailing
$arrItm[1] = trim($arrItm[1]); # blank lines from both parts
$arrItmNam = explode('=', $arrItm[0]); # break item name away from Content-Disposition wording
$strItmNam = str_replace('"', '', $arrItmNam[1]); # get item name without its enclosing double-quotes
$strItmVal = $arrItm [1] ; # get item value
$arrRtn[$strItmNam] = $strItmVal; # append (item-name => item-value) to output buffer
} # done with scanning input items
return $arrRtn; # pass result back to caller
} # ArrayFromHttpPut