4

我正在使用最新的 CI。我在本地工作时没有任何问题。但是当我将我的作品移动到实时服务器时,我遇到了一个问题。

当我从我的下载选项卡下载文件时,文件正在以正确的大小和格式下载。但是当我打开下载的文件时,例如,如果它是图像,图像不显示,或者如果它是单词,它会要求选择编码类型,选择编码类型后,内容是垃圾字符。

如何解决这个问题。?

提前致谢。

我用来下载文件的代码:

$content = file_get_contents($file_loc);
force_download(FILENAME.EXT, $content);
4

6 回答 6

4

这对我有用。

ob_clean(); 
$data = file_get_contents("localhost/qlip/uploads/filename.jpg"); //assuming my file is on localhost
$name = 'document.jpg'; 
force_download($name,$data); 
于 2015-12-27T08:45:38.687 回答
2

试试下面的代码:

<?php

function downloadFile($file){
   $file_name = $file;
   $mime = 'application/force-download';
   header('Pragma: public');    
   header('Expires: 0');        
   header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
   header('Cache-Control: private',false);
   header('Content-Type: '.$mime);
   header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
   header('Content-Transfer-Encoding: binary');
   header('Connection: close');
   readfile($file_name);    
   exit();
}
?>

并调用函数:

<?php
downloadFile("./files/image.jpg");
?>

前提是文件“image.jpg”是正确的地址

于 2012-11-29T05:25:41.827 回答
0

如果你愿意,你可以试试这个:

function download() 
{
    // asumming you have http://www.domain.com/index.php/controller/download/file_name/extension/
    $extension = $this->uri->segment(4); // file extension
    $file_name = $this->uri->segment(3) . '.' . $extension; // file name
    $file_path = FCPATH . 'application/documentos/' . $file_name; // absolute path to file
    if (is_file($file_path)) {
        $mime = 'application/force-download';
        header('Pragma: public');    
        header('Expires: 0');        
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Cache-Control: private',false);
        header('Content-Type: ' . $mime);
        header('Content-Disposition: attachment; filename="' . $file_name . '"'); file name
        header('Content-Transfer-Encoding: binary');
        header('Connection: close');
        readfile(base_url() . 'application/documentos/' . $file_name); // relative path to file   
        exit();
    } else {
        redirect('/welcome/');
    }
}   
于 2015-01-14T05:56:14.903 回答
0

你的文件路径不正确。修复路径以更正并运行。它应该可以工作。

于 2017-08-31T09:22:49.930 回答
0

添加 ob_clean(); 在 force_download() 的代码之前;否则图像,word 文件会损坏。

ob_clean();
$content = file_get_contents($file_loc);
force_download(FILENAME.EXT, $content);
于 2015-11-17T12:35:20.280 回答
0

在 CI 3 中:为我工作

 $data = 'Here is some text!';
 $name = 'mytext.txt';
 force_download($name, $data);

或者 :

 // Contents of photo.jpg will be automatically read
 force_download('/path/to/photo.jpg', NULL);

资源

于 2016-10-21T12:53:08.903 回答