提交表单时生成电子表格。出现一个提示,要求我保存文件,但我想当我提交表格,电子表格自动保存在我的服务器目录,例如public_html/apm/test/file.xls.
我该如何处理这个?
之前我使用这个代码
/* Please acknowledge use of this code by including this header. */
$data = array(
array("firstname" => $firstName, "lastname" => $lastName, "age" => $phoneNo, "email" => $email, "dob" => $dob, "mailingAddress" => $mailingAddress, "prescribedPhysician" => $prescribedPhysician, "patientID" => $patientID, "caregiver" => $caregiver, "nameOfCaregiver" => $nameOfCaregiver, "growLocation" => $growLocation, "expirationDate" => $expirationDate, "registrationNo" => $registrationNo, "medicalCondition" => $medicalCondition, "describeMedicalCondition" => $describeMedicalCondition, "grower" => $grower, "tradingCannabis" => $tradingCannabis, "medicalCannabis" => $medicalCannabis, "needCaregiver" => $needCaregiver)
);
function cleanData(&$str){
$str = preg_replace("/'t/", "''t", $str);
$str = preg_replace("/'r?'n/", "''n", $str);
if(strstr($str, '"'))
$str = '"' . str_replace('"', '""', $str) . '"';
}
// file name for download
$filename = $firstName." ".$lastName." ".date('d-m-y') . ".xls";
header("Content-Disposition: attachment; filename='"$filename'"");
header("Content-Type: application/vnd.ms-excel");
$flag = false;
foreach($data as $row) {
if(!$flag) {
// display field/column names as first row
echo implode("'t", array_keys($row)) . "'n";
$flag = true;
}
array_walk($row, 'cleanData');
echo implode("'t", array_values($row)) . "'n";
}
exit;
你的代码正在做你告诉它要做的事情:"使这个内容可以为web客户端下载。"这是由两个header
指令完成的:
header("Content-Disposition: attachment; filename='"$filename'"");
header("Content-Type: application/vnd.ms-excel");
然后,在代码的末尾,您将echo
一些内容。这个内容是提供给用户的
如果要在服务器上保存文件,则不能回显文件内容,但必须在服务器上save此内容。您可以使用file_put_contents
PHP函数。