我想要下載 a .csv文件通過鏈接。爲此,下載鏈接定義在模板文件中。已下載.csv文件包含HTML標記作爲文本
要生成.csv文件我寫了一段代碼如下。
public function loadPartnerApplicantData() {
$inboundBo = BoFactory::getInboundHttpRequestBo();
$fileType = $inboundBo->getSanitizedGetParam('f');
$formId = $inboundBo->getSanitizedGetParam('fid');
ServiceFactory::getFormService()->loadFormDetails($formId);
$dbTable = BoFactory::getFormBo()->getFormDbTable($formId);
$formName = slugify(BoFactory::getFormBo()->getFormName());
$fileName = $formName . "." . time();
$fieldMasterSqlQuery = "SELECT field_name,field_label FROM" . FORM_FIELDS_MASTER_v2 . "where form_id='$formId' order by serial_no";
$fieldMasterSqlQueryStatus = mysql_query(mysql_fetch_assoc($fieldMasterSqlQuery));
$csvHeader = "";
$fieldNameArray = array();
foreach ($fieldMasterSqlQueryStatus as $key => $value) {
if ($value['field_name'] == 'declaration' || $value['field_name'] == 'docPicture') {
continue;
}
$csvHeader.= "\"{$value['field_label']}\";";
$fieldNameArray[] = $value['field_name'];
}
$queryString = implode(",", $fieldNameArray);
$dbTableSqlQuery = "SELECT $queryString FROM `$dbTable`";
$dbTableSqlQueryStaus = mysql_query(mysql_fetch_assoc($dbTableSqlQuery));
ef_clearBuffer();
// To generate csv
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=$fileName.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo($csvHeader);
foreach ($dbTableSqlQueryStaus as $applicantData) {
echo "\n";
foreach ($fieldNameArray as $fieldName) {
echo "\"$applicantData[$fieldName]\";";
}
echo "\n";
}
}
然後生成所需的.csv。
但在.csv文件的末尾瀏覽器的HTML標籤正在顯示。不應該在那裏。
請建議我從生成的.csv文件中刪除html內容。
在此先感謝。
不要試圖去除這些字符,即治癒症狀,而不是原因。找出那些角色來自哪裏,並解決這個問題。首先將該內容寫入文件,而不是將其傳遞給瀏覽器。您可以通過輸出boffering來實現這一點,以便您不必更改上面的代碼。然後檢查文件內容是否已經包含html字符。我懷疑,在這種情況下,您的代理或緩存嘗試成爲「智能」存在問題。在這種情況下檢查提供的標題。 – arkascha 2013-03-03 07:44:56
感謝@arkascha對你的建議。我通過在函數末尾添加** exit; **語句來完成工作(在csv準備好之後)。 – Sam 2013-03-03 12:52:00
然後您稱之爲解決方案?所以答案是什麼? html序列從哪裏來?是什麼讓你確定類似的事情明天不會再發生?當你想要更好地進行編程時,最重要的是要理解正在發生的事情。這不同於嘗試'圓',直到事情似乎工作,不知何故...... – arkascha 2013-03-03 13:19:49