2

「簡単な」ダウンロードのために Codeigniter の Download ヘルパーを使用しています。

    $this->load->helper('download');
    $file = //get_file_name_from_db
    $data = file_get_contents( upload_path . $file);
    force_download($file, $data);

私が抱えている問題は、.7z と .rar が正しくダウンロードされていないのに、.zip が正しくダウンロードされていることです。ただし、アップロードされたファイルをチェックして、ファイルが破損しているかどうかを確認すると、(FTP 経由またはローカルでフォルダーをチェックするだけで) 問題ありません。

ファイルが非常に小さい場合 (5kb 程度) に混乱を招くことに加えて、どのタイプ (7z および rar) も破損しません。

参考までに、mime.php で使用する MIME タイプを示します (アップロード ヘルパーとダウンロード ヘルパーの両方が使用します)。

'zip'   =>  array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
'7z'    =>     array('application/x-7z-compressed','application/x-7z',      'application/7z', 'application/force-download', 'application/octet-stream'),
'rar'   =>  array('application/x-rar-compressed','application/x-rar', 'application/rar', 'application/octet-stream')

問題は、MIME タイプのいずれかの 2 つのポイントにある可能性があります (前述のように、非常に小さなファイル サイズで機能するため、おそらくそうではありません)。または file_get_contents() と header("Content-Length: ".strlen($data)); サイズに関係なく、.zip は常に正しくダウンロードされるため、そうではない可能性があります。

それとも、サーバーの設定の問題でしょうか? ホストとローカルホストの両方でテストしましたが、同じように動作します。

それで、誰かが問題が何であるかを知っていますか、それとも私が使用すべき代替のダウンロードスクリプトまたは方法を提案できますか?

更新: 1.8 MB のサイズの 7z ファイルをホストにアップロードしましたが、ダウンロードしたときにファイルが破損していませんでした...何が問題なのかを理解するのにますます苦労しています。

アップデート:

答えが見つかったのは、ファイルフォームの上にある値であり、少し前に値を確認するために値をエコーし​​たいくつかの接続されたメソッドでした。

詳細はこちら: ダウンロードしたファイルが破損する原因は何ですか?

4

1 に答える 1

0

zip/gzip のような 7z または rar ファイルを生成するための組み込みライブラリが PHP にあるとは思いません。そこにある場合は、これに外部ライブラリを使用する必要があるかもしれません。

于 2013-05-08T18:15:03.760 に答える