Hello there, I guess this could help you.The way I did it was by making streamAction() in my controller that looks like this:
function streamAction()
{
$fileString = $this->_request->getParam("fileString");
$dldFileName = $this->_request->getParam("fileName");
$disposition = $this->_request->getParam("fileDisposition"); //
can be "inline" or "attachment"
$contentType = $this->_request->getParam("fileMime");
if ($this->_request->get("HTTPS") !== null) {
$this->_response->setHeader("Pragma", "");
$this->_response->setHeader("Cache-Control", "");
$this->_response->setHeader("Expires", "Mon, 1 Jan 2000
00:00:00 GMT");
$this->_response->setHeader("Last-Modified", gmdate("D, d M
Y H:i:s") . " GMT");
$this->_response->setHeader("Cache-Control", "no-store,
no-cache, must-revalidate"); // HTTP/1.1
$this->_response->setHeader("Cache-Control", "post-check=0,
pre-check=0");
} else if ($disposition == "attachment") {
$this->_response->setHeader("Cache-control", "private");
} else {
$this->_response->setHeader("Cache-Control", "no-cache,
must-revalidate");
$this->_response->setHeader("Pragma", "no-cache");
$this->_response->setHeader("Expires", "0");
}
$agent = trim($this->_request->get("HTTP_USER_AGENT"));
if ((preg_match('|MSIE ([0-9.]+)|', $agent, $version)) ||
(preg_match('|Internet Explorer/([0-9.]+)|', $agent,
$version))) {
if ($disposition == "attachment")
$this->_response->setHeader("Content-Type",
"application/x-msdownload");
else
$this->_response->setHeader("Content-Type", $contentType);
if ($version == '5.5') {
$this->_response->setHeader("Content-Disposition",
"filename=".$dldFileName);
} else {
$this->_response->setHeader("Content-Disposition",
$disposition."; filename=".$dldFileName);
}
} else {
$this->_response->setHeader("Content-Type", $contentType);
$this->_response->setHeader("Content-Disposition",
$disposition."; filename=" . $dldFileName);
}
$this->_response->setHeader("Content-Length", strlen($fileString));
$this->_response->setHeader("Content-transfer-encoding", "8bit");
$this->_response->setHeader("Connection", "close");
$this->_response->setBody($fileString);
$this->render();
}
And than forward to it from wherever i need it like so:
$this->_forward("stream", "pdf", null, array("fileString" => $pdf->render(),
"fileName" => $pdfFile,
"fileDisposition" =>
"inline",
"fileMime" =>
"application/pdf",
));
The code in streamAction takes care of everything, and works in IE5.5,
6.0+, Mozilla, Opera (as far as i could test) and over http as well as
https protocol.
Best regards, Goran Dodig [EMAIL PROTECTED] frederic wolf wrote:
Mauro Casula a écrit :Hi all, I have an action that make a mysql database backup in this way: public function backupDatabaseAction(){ $db = Zend::registry('db'); $view = Zend::registry('view');$config = Zend::registry('config'); $session = Zend::registry('session');$view->title = $config->site->title." - Modifica di una casa"; $ctr = new CaseVacanzaDataController($db, $session); $view->actionTemplate = 'main.php'; $view->header = $view->render('header.php'); system($config->bin_path."\export_db.bat", $ret); $view->menu = $view->render('menu_amministrazione.php');$view->body = $view->render('admin_backup_database.php'); $view->footer = $view->render('footer.php');echo $view->render('main.php');}the export_db.bat script write a Sql backup file in a specific directory..What I have to do for return this file directly with the download popup andso delete it..? Thankyou in advance for the answers.. Regards. Mauro CasulaHello, this could help you maybe : basically you could do that $str = file_get_contents($file);header('Content-Disposition: attachment; filename="downloaded.pdf"');header('Content-type: application/pdf'); echo $str;the example is for a pdf file, in your example, yous hould change Content-type (look for it in header doc) Content-Disposition: attachment makes the download window opens in order to save it or display it on the client side.But I guess, a "zfer" way would be to use the response object, maybe like this :|$this->getResponse() ->setHeader('Content-Type', 'text/plain')||->setHeader('|Content-Disposition|', '|attachment; filename="bkp.sql"'|') || ->appendBody(|$str|);Hope this could help you, though I didn't test it. At least it works for me with pdf files.fred |
smime.p7s
Description: S/MIME Cryptographic Signature
