4

私は最新のCIを使用しています。ローカルで作業している間は問題ありません。しかし、自分の作品をライブ サーバーに移動すると、問題が発生します。

ダウンロード タブからファイルをダウンロードすると、ファイルは正しいサイズと形式でダウンロードされます。しかし、ダウンロードしたファイルを開くと、たとえば、画像の場合は画像が表示されないか、単語の場合はエンコードの種類を選択するように求められ、エンコードの種類を選択した後、コンテンツはジャンク文字です。

この問題を解決する方法。

前もって感謝します。

ファイルのダウンロードに使用したコード:

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

6 に答える 6

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

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 に答える