- 締切済み
move_uploaded_fileでアップロードしたファイルのダウンロード・解凍
move_uploaded_fileでzipファイルをアップロードし、 chmodでパーミションを0777に変更しました。 この状態で、直接ファイルを指定すれば、普通にダウンロード・解凍できるのですが、 このファイルを別プログラムから、 header('Content-type: application/octet-stream'); header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); header('Pragma: no-cache'); header('Content-Disposition: attachment; filename="ファイル名"'); header('Content-Length: ファイルサイズ'); としてfpassthruで開くと、ダウンロードはできますが、解凍ができません。 しばらく考えているのですが、解決できず…。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- shimix
- ベストアンサー率54% (865/1590)
回答No.1
ファイルサイズはfilesize()で取得したものですよね?直接ファイルを指定してダウンロードしたものとファイルサイズは完全に一致していますか?またfpassthruでなく、readfileではどうなりますか? #私はreadfileでしかやったことがないので(汗 あと、とりあえずcache制御のheaderは外してみるとか・・
お礼
回答ありがとうございます。 その後少し進展があり、XPで、zipをダブルクリックするとファイルが壊れている旨 エラーが表示されますが、解凍ツールで当該ファイルを指定すると解凍できました。 (使用したツールはNoahとwinRAR) 取得したファイルサイズとダウンロードされたファイルサイズは一致しています。 ファイルサイズはfilesize()で取得しています。 get_headersのContent-Lengthでの取得にしても結果は同じです。 (もちろん取得したファイルサイズは同じです) fpassthruではなくreadfileもやってみましたが、やはり同じでした。 cache制御のheaderを外してみたり、 Content-Typeを変えてみたりもしたのですが、変わらず…。 もう少しいろいろやってみようと思います。 ありがとうございました。