2016-11-24 144 views
0

我跟着Cakes Cookbook發送文件(http://book.cakephp.org/3.0/en/controllers/request-response.html#sending-files),但我一直面臨一個奇怪的問題。 PDF,DOC和其他二進制文件工作得很好。但是,當我嘗試下載/顯示圖像(JPG或PNG)時,文件會自行破壞。CakePHP 3的圖像下載損壞

下載的文件不被識別爲圖像。它的尺寸與原來的尺寸完全相同,但是當我比較它們時,它們完全不同。

我在網上找不到任何類似蛋糕的東西,所以我希望你能幫助我!

下面的代碼是我的下載操作

public function arquivo($id) { 
    $file = $this->Arquivos->get($id); 

    $this->response->file($file['filename'], ['download' => true]); 
    // Return response object to prevent controller from trying to render 
    // a view. 

    return $this->response; 
} 

響應頭:

接受-範圍:字節

的Cache-Control:無店鋪,無緩存,必須重新驗證,後檢查= 0,預檢= 0

連接:保持活躍

的Content-Length:121000

內容類型:圖像/ JPEG

日期:星期四,2016年11月24日16時17分49秒GMT

到期日:星期四,1981年11月19日08: 52:00 GMT

保持活動:超時= 5,最大= 100

雜注:無緩存

服務器:Apache/2.4.10(Ubuntu)

+0

檢查無誤MIME TYPES你有沒有檢查'$文件[」文件名']'是你的文件的完整路徑? –

+0

是的,我登錄了它,它是正確的。而且,它確實發送了一個具有相同大小和名稱的文件。而且,正如我所說,pdf文件可以工作 –

+0

您應該調試圖像的文件MIME類型。 –

回答

0

檢查您的文件路徑和MIME類型是否正確。

public function arquivo($id) { 
    $file = $this->Arquivos->get($id); 
    $this->response->file(
     $file['filename'], #Check $file['filename'] is full path of your download file 
     [ 
      'download' => true, 
      'name' => 'Your_Download_File_Name_Here' 
     ] 
    ); 
    return $this->response; 
} 

例子:

$file['filename']變量應該是/path/to/your/file.jpg

同樣來自CakePHP的3 Sending or Downloading Files