0

我想通过链接下载.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 内容。

提前致谢。

4

2 回答 2

2

由于您的函数将请求处理到最后(即交付所有数据),并且您不希望框架(无论您使用哪个)继续处理,添加

exit(0);

作为函数的最后一行。这将在内容交付后停止处理,并阻止框架/环境发送额外的数据。

于 2013-03-31T03:24:49.913 回答
0

也许您在处理标头之前已经有一些回显命令,那么您要下载的 .csv 文件将包含您之前编写的所有字符串。

于 2013-03-21T12:11:34.623 回答