我提交表单时会生成电子表格。出现一个提示,要求我保存文件,但是当我提交表单时,我希望这样,电子表格自动保存在我的服务器目录中,例如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;
答案 0 :(得分:1)
您的代码完全按照您的要求执行操作:"使此内容可供Web客户端下载。"。这是由header
directives:
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
然后,在代码的最后,您echo
了一些内容。因此,此内容将提供给用户
如果要将文件保存在服务器上,则无法回显文件内容,但必须在服务器上保存此内容。您可以使用file_put_contents
PHP function。