お世話になります。
phpでファイルをダウンロードさせるようなものを作っております。ダウンロードサイズが大きいことからストリーミング的にループさせてファイル出力する方法でやっております。
ダウンロードサイズは、30MBから60MB程度あってかなり大きい方です。
ちょっと原因がわからないのですが、あるサイズを超えると画像ファイルが壊れてダウンロードできなくなってしまいます。
ダウンロードしたファイルを開くと、「ファイル"xxxx.png"を開けませんでした。ファイルが壊れているか、プレビューが認識しないフォーマットを使用している可能性があります。」というメッセージが出ます。
lang
1$source = './source.png'; 2$content_length = filesize($source); 3 4header("Content-Type: application/octet-stream"); 5header("Content-Disposition: attachment; filename=\"".basename($source)."\""); 6header("Content-Length: ".$content_length); 7header("Content-Transfer-Encoding: binary"); 8 9//ここから変更 10$handle = fopen($source, 'rb'); 11while (!feof($handle)) 12{ 13 echo fread($handle, 1024*4); 14 ob_flush(); 15 flush(); 16} 17fclose($handle);
小さなサイズのものだとダウンロードできるので、php.iniで何かしらの値を変更したりなど、必要なものでしょうか。
コード的には問題ないような気がしております。
袋小路に入った感じなのですが、何かしら助言いただけますでしょうか?
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。