Heim  >  Artikel  >  Backend-Entwicklung  >  Das Problem beim Herunterladen der Header-Implementierungsdatei

Das Problem beim Herunterladen der Header-Implementierungsdatei

WBOY
WBOYOriginal
2016-12-01 00:56:191320Durchsuche

Sie müssen auf die Schaltfläche klicken, um die Informationen zu erhalten und den Inhalt in Form einer Datei herunterzuladen.
Aber jetzt öffnet ein Klick auf die Schaltfläche ein neues Fenster und zeigt den Inhalt an, anstatt ein Download-Fenster aufzurufen.
Der Code lautet wie folgt:

<code>$filename = $this->input->cookie('merchant_id');
$timestamp = date("YmdHis",time());
$filename .= $timestamp.'.'.$fileType;

$title = mb_convert_encoding($title,'gbk','utf-8');

header('Content-type: application/octet-stream');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Content-Disposition: attachment; filename=' . $filename);
echo $title;

$ret = $this->download_model->QueryList($Req, $Resp);
$content = $this->GetDownLoadContentNew($ret['bill_list'], $fileType);
echo $content;
</code>

Unter anderem formatiert GetDownLoadContentNew den Inhalt entsprechend.
Sie wissen nicht, was los ist oder haben nichts bemerkt? Ich hoffe, Sie können mir helfen, einen Blick darauf zu werfen, danke. (Der Dateityp ist csv oder txt, was in verschiedenen Browsern gleich ist, aber den Download nicht auslösen kann)

Antwortinhalt:

Sie müssen auf die Schaltfläche klicken, um die Informationen zu erhalten und den Inhalt in Form einer Datei herunterzuladen.
Aber jetzt öffnet das Klicken auf die Schaltfläche ein neues Fenster und zeigt den Inhalt an, anstatt ein Download-Fenster aufzurufen.
Der Code lautet wie folgt:

<code>$filename = $this->input->cookie('merchant_id');
$timestamp = date("YmdHis",time());
$filename .= $timestamp.'.'.$fileType;

$title = mb_convert_encoding($title,'gbk','utf-8');

header('Content-type: application/octet-stream');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Content-Disposition: attachment; filename=' . $filename);
echo $title;

$ret = $this->download_model->QueryList($Req, $Resp);
$content = $this->GetDownLoadContentNew($ret['bill_list'], $fileType);
echo $content;
</code>

Unter anderem formatiert GetDownLoadContentNew den Inhalt entsprechend.
Sie wissen nicht, was los ist oder haben nichts bemerkt? Ich hoffe, Sie können mir helfen, einen Blick darauf zu werfen, danke. (Der Dateityp ist csv oder txt, was in verschiedenen Browsern gleich ist, aber den Download nicht auslösen kann)

<code>/**
  * 强制下载文件 
  * @param string $file 文件路径 
*/
function force_download($file){ 
    if ((isset($file)) && (file_exists($file))) {
        header("Content-length: ".filesize($file)); 
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment;filename="'.basename($file).'"'); 
        readfile($file); } 
    else { 
        echo "No file selected"; 
    }
}
//使用示例
force_download('./test.jpg');</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn