• 締切済み

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で開くと、ダウンロードはできますが、解凍ができません。 しばらく考えているのですが、解決できず…。 宜しくお願いします。

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

ファイルサイズはfilesize()で取得したものですよね?直接ファイルを指定してダウンロードしたものとファイルサイズは完全に一致していますか?またfpassthruでなく、readfileではどうなりますか? #私はreadfileでしかやったことがないので(汗 あと、とりあえずcache制御のheaderは外してみるとか・・

asx
質問者

お礼

回答ありがとうございます。 その後少し進展があり、XPで、zipをダブルクリックするとファイルが壊れている旨 エラーが表示されますが、解凍ツールで当該ファイルを指定すると解凍できました。 (使用したツールはNoahとwinRAR) 取得したファイルサイズとダウンロードされたファイルサイズは一致しています。 ファイルサイズはfilesize()で取得しています。 get_headersのContent-Lengthでの取得にしても結果は同じです。 (もちろん取得したファイルサイズは同じです) fpassthruではなくreadfileもやってみましたが、やはり同じでした。 cache制御のheaderを外してみたり、 Content-Typeを変えてみたりもしたのですが、変わらず…。 もう少しいろいろやってみようと思います。 ありがとうございました。

関連するQ&A

専門家に質問してみよう