下载的.csv文件包含HTML标记作为文本

时间:2013-03-03 07:21:26

标签: php csv html

我想通过链接下载 .csv 文件。因为在模板文件中定义了下载链接。

要生成.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内容

提前致谢。

2 个答案:

答案 0 :(得分:2)

由于您的函数处理请求直到结束(即传递所有数据),并且您不希望框架(无论您使用哪个)继续处理,添加

exit(0);

作为你的功能的最后一行。这将在内容传递后停止处理,并阻止框架/环境发送其他数据。

答案 1 :(得分:0)

在标题操作之前,您可能已经有了一些echo命令,然后您要下载的.csv文件将包含您之前编写的所有字符串。