Just so this is searchable & on the record here at the cakephp group: using ob_gzhandler in conjunction with ob_* functions like the ob_clean and ob_end_clean in the code snippets in above posts can cause headaches. In particular, you might have output_handler set = ob_gzhandler in your php.ini and not even realise it... this caused downloads to fail completely for me (php-5.1.6 on CentOS 5.3). Seems to be an old php bug (http://bugs.php.net/bug.php?id=34071 & variations...). Answer = if you want to use ob_gzhandler, invoke it at function level, and not in conjunction with ob_clean.
On Jul 24, 6:34 pm, Vijay Kumbhar <[email protected]> wrote: > Hey Crazy, > > thanks a lot ....... i will try this out. > > > > On Fri, Jul 24, 2009 at 1:56 PM, Crazy <[email protected]> wrote: > > > Will there be allot of file downloads? > > > If there will be a big load on the site from file downloads, > > especially big files. Then it's not smart to handle it in cakephp. > > Especially if you want to support download accellerators/resume > > support > > > On every request(someone that uses a download accelerator and makes 10 > > requests), the cakephp framework is loaded. > > This is accually not needed, because it's a plain file download. > > Even if you want to check a couple of things in the database, it's > > better to do it manually. > > > This ofcouse depends on the situation you're in. > > In my case, using cakephp this way would crash my server within 5 > > minutes(if not faster) > > > You can find the code I use here: > > >http://pastebin.com/f179e1e49 > > > I've been using it for several years and transfer 15 to 20tb per month > > using that piece of code. > > > /Crazy > > > On Jul 24, 9:58 am, Vijay Kumbhar <[email protected]> wrote: > > > Yeah... > > > > Thanks rufus it works ......... > > > > only i changed this line, > > > > header('Content-Type: application/octet-stream'); to > > > > header("Content-Type: ".$result['Application']['resume']).""); > > > > that is the content type of the uploaded file coming from my database. > > > > Thanks again............... > > > > On Fri, Jul 24, 2009 at 12:53 PM, Rufus <[email protected]> wrote: > > > > > Here is my code: > > > > > pdfDir is defined constant fyi > > > > > function download($id = null) { > > > > > if (!$id && empty($this->data)) { > > > > $this->Session->setFlash(__('Invalid Invoice', > > > > true)); > > > > $this->redirect(array('action'=>'index')); > > > > } > > > > > Configure::write('debug', 0); > > > > $file = $this->Invoice->findById($id); > > > > if (file_exists(pdfDir.$file['Invoice']['file_name'])) { > > > > header('Content-Description: File Transfer'); > > > > header('Content-Type: application/octet-stream'); > > > > header('Content-Disposition: attachment; filename='.basename > > > > (pdfDir.$file['Invoice']['file_name'])); > > > > header('Content-Transfer-Encoding: binary'); > > > > header('Expires: 0'); > > > > header('Cache-Control: must-revalidate, post-check=0, pre- > > > > check=0'); > > > > header('Pragma: public'); > > > > header('Content-Length: ' . filesize(pdfDir.$file['Invoice'] > > > > ['file_name'])); > > > > ob_clean(); > > > > flush(); > > > > readfile(pdfDir.$file['Invoice']['file_name']); > > > > exit; > > > > } else { > > > > $this->Session->setFlash(__('File Does Not > > Exist', > > > > true)); > > > > $this->redirect(array('action'=>'index')); > > > > } > > > > > } > > > > > On Jul 24, 12:44 am, Vijay <[email protected]> wrote: > > > > > Hello All, > > > > > > I uploads the files to webroot/uploads folder from the file uploading > > > > > component. > > > > > > Now I am trying to download that file from webroot/uploads folder but > > > > > it is giving me 0 byte file. > > > > > > Code is as follows, > > > > > > function admin_download($id) > > > > > { > > > > > $this->adminchecksession(); > > > > > // you'll want to check the login status here ... > > > > > > $result = $this->Application->findById($id); > > > > > > Configure::write('debug', 0); > > > > > $this->view = 'Media'; > > > > > > /* MediaView is really irritating > > > > > */ > > > > > //$name = $result['Application']['resume']; > > > > > > $ext = explode("." ,$result['Application']['resume']); > > > > > > $params = array( > > > > > 'name' => $ext[0], > > > > > 'download' => true, > > > > > 'extension' => $ext[1], > > > > > 'path' => APP."webroot/uploads".DS, > > > > > 'mimeType' => array($result['Application'] > > > > > ['type']) > > > > > ); > > > > > > $this->set($params); > > > > > > } > > > > > > Please help me on this. > > > > -- > > > Thanks & Regards, > > > Vijayk. > > > Co-founder (www.weboniselab.com) > > > > "You Bring the Dreams, We'll Bring the Means" > > -- > Thanks & Regards, > Vijayk. > Co-founder (www.weboniselab.com) > > "You Bring the Dreams, We'll Bring the Means" --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
