2012-03-14 81 views
0

我有CakePHP 1.3,我有一个应该查看文件的操作,该文件可能是.pdf,.doc,....或任何文档,但我取而代之的是一个空白页。通过媒体视图CakePHP视图文件不起作用

代码示例:

public function view_attachments($attachment_id){ 
     $attachment = $this->get_attachment($attachment_id); 
     if($attachment){ 
      $path = pathinfo($attachment['EmailAttachment']['file']); 
      $this->view = 'Media'; 
      $this->autoRender = false; 
      $params = array(
       'id' => $path['basename'], 
       'name' => $path['filename'],    
       'download' => false, 
       'mimeType'=> $this->Common->get_mime_content_type($path['basename']),   
       'extension' => strtolower($path['extension']), // must be lower case    
       'path' => APP . $path['dirname'] . DS // don't forget terminal 'DS'  
      );  
      $this->set($params); 
     } 
    } 

什么想法?请指教。

+0

你能为$ PARAMS添加调试()?验证你的路径是否正确。来自媒体视图的404错误通常实际上是在媒体视图无法找到有问题的文件时触发的。 – 2012-03-18 05:14:55

回答

0

检查media.ctp文件必须是空白......得到正确的输出... 感谢

+0

也是,同样的结果:( – 2012-03-16 23:33:38

0

检查我自己的工作代码,我看到的唯一区别是

$this->autoRender = false; 

中当然你不应该有一个“view_attachments.ctp”文件。

请注意,浏览器本身无法打开“.doc”。所以即使你想要他展示它,他也会让你下载它。

function download($id) { 

    $data = $this->OdmPieceJointe->read(null, $id); 
    $path = pathinfo($data['OdmPieceJointe']['fichier']); 

    $this->view = 'Media'; 
    $params = array(
     'id' => $path['basename'], 
     'name' => $path['filename'], 
     'download' => false, 
     'extension' => $path['extension'], 
     'path' => 'uploads/', 
     ); 

    $this->set($params); 

} 
+0

我也试过这个,删除$ this-> autoRender = false;并确保没有它的视图文件,然后我得到一个Not Found屏幕 – 2012-03-14 18:27:26

+0

嗯,只有两个其他的想法: - 删除'mimetype'这一行 - 把一条艰难的'路径' – olaurendeau 2012-03-14 19:02:16

0

可能:

Configure::write('debug', 0);