当文件没有内容或大小为0时,文件下载错误


File download error when file has no content or size is 0

我无法下载任何文件(文本,文档或任何其他扩展名),如果它的大小是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);
谁能帮我解决这个问题?上面的代码工作良好,如果文件有任何内容,但停止工作,如果没有什么,所以我很困惑,不知何故沮丧。

我也遇到过这个问题,但不知怎么的,我得到了文件大小为零的帮助

你可以使用下面的代码,看看是否有帮助。

不要使用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();

我猜在这里,不能看到其余的代码。

我假设当你试图下载一个0字节的文件时,出现了一个错误

所以我可能会写成

if(!force_download($fileoriginalname, $data))
{
    '' the file download failed. handle this error
}