1

ファイルのサイズが 0 バイトであるか、何も書き込まれていない場合、ファイル (テキスト、ドキュメント、またはその他の拡張子) をダウンロードできません。これが私が次のように使用しているコードです。

$filename = $this->input->get('filename');              
$fileoriginalname = $this->input->get('fileorgname');

$this->load->helper('download');
$Path = 'files/'.$filename;
$data = file_get_contents($Path);

force_download($fileoriginalname, $data);

誰でも私がそれを解決するのを手伝ってくれますか? 上記のコードは、ファイルにコンテンツが含まれている場合は正常に動作しますが、何もない場合は動作を停止するため、非常に混乱し、どういうわけかイライラします.

4

2 に答える 2

2

私もこの問題に直面しましたが、どういうわけかFile Size Zeroから助けを得ました

この次のコードを使用して、役立つかどうかを確認できます。

使用する代わりにforce_downloadこれを試してください

if(ini_get('zlib.output_compression')) 
  { 
    ini_set('zlib.output_compression', 'Off'); 
  }


    $this->load->helper('file');

    $mime = get_mime_by_extension($Path);


    header('Pragma: public');     // required
    header('Expires: 0');         // no cache
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($Path)).' GMT');
    header('Cache-Control: private',false);
    header('Content-Type: '.$mime);  
    header('Content-Disposition: attachment; filename="'.$fileoriginalname.'"');  // Add the file name
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize($Path)); 
    header('Connection: close');
    readfile($Path); 
    exit();
于 2013-06-15T11:03:01.003 に答える
0

ここで推測しているのは、残りのコードを見ることができないということです。

0バイトのファイルをダウンロードしようとすると、エラーが発生していると思います

だから私は多分次のようなものを書くでしょう

if(!force_download($fileoriginalname, $data))
{
    \\ the file download failed. handle this error
}
于 2013-06-15T10:50:37.170 に答える