0

以下のコードを使用してファイルをダウンロードすると、IE、Firefox では問題なく動作しますが、Chrome では、コンソールでレイアウトとビューがブラウザに送り返されていることがわかります。ステータスはキャンセルに設定され、行全体が赤で強調表示されます。ファイルは正常にダウンロードされます。

出口の後; 私が試したさまざまなヘッダーオプションがありますが、役に立ちません

if ($request->isPost()) {

    $this->_helper->viewRenderer->setNoRender(true);
$this->_helper->layout()->disableLayout();


$file_fullpath = "C:/eclipse-php/workspace/Dartfire/uploads/data/logo.jpg";

$mtype = '';
// magic_mime module installed?
if (function_exists('mime_content_type')) {
    $mtype = mime_content_type($file_fullpath);
}
// fileinfo module installed?
else if (function_exists('finfo_file')) {
    $finfo = finfo_open(FILEINFO_MIME); // return mime type
    $mtype = finfo_file($finfo, $file_fullpath);
    finfo_close($finfo); 
}

$size = filesize($file_fullpath);

header('Content-Type: image/jpg');
header('Content-Disposition: attachment; filename="logo.jpg"');
readfile($file_fullpath);

exit; 


//header("Content-type: application/octet-stream");

        /*
$this->getResponse()
    ->setHeader('Content-Description', 'File Transfer', true)
        ->setHeader('Content-Type', $mtype, true) // change to application/pdf
        ->setHeader('Content-Disposition', "attachment; filename={$document->getFilename()}", true)
        ->setHeader('Content-length', $size, true)
        ->setHeader('Content-Transfer-Encoding', 'binary', true)
        ->setHeader("Content-type", "application/octet-stream")
        ->setHeader('Cache-control', 'private')
    ->appendBody(readfile($file_fullpath));
        //->sendHeaders();

//$this->getResponse()->sendResponse(); 
//Zend_Wildfire_Channel_HttpHeaders::getInstance()->flush();

}  
4

1 に答える 1

0

header()出力がブラウザーに送信される前に、呼び出しを行う必要があります。したがって、あなたの場合、これは呼び出しの前に行う必要がありreadline()ます。

于 2012-10-30T14:05:16.993 に答える