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

0

ヘッダー操作の前にすでにいくつかのエコーコマンドがあった可能性があります。ダウンロードする.csvファイルには、以前に書き込んだすべての文字列が含まれます。

于 2013-03-21T12:11:34.623 に答える