プログラムの中でzipファイルのダウンロード
zend framework を使って開発してます。
あるサイトからzipファイルをDLし、中のCSV情報を取得する必要があるのですが、
うまい方法が思いつきません。
zend frameworkを使っているので、
Zend_Http_Clientを使用するのが筋かなと思っており、
ただ、その場合、取得したzipファイルのバイナリデータを、
ファイルに保存→解凍してcsvファイルの情報を取得というステップが必要になります。
ファイルに保存する前のバイナリデータをそのまま解凍してcsv形式に展開といったことはできないのでしょうか?
現在下のような形で実現させていますが、前述した通り非常に遠回りしてる気がします。
それに、バイナリデータを一旦zipファイルとして保存しなければならないのであれば、
Zend_Http_Clientを使わずにwgetで取得した方がまだいいんじゃないかとも思ってます。
----------------------------------
$client = new Zend_Http_Client( $url );
$value = $client->request('GET');
# zipファイルとして保存
$fp = fopen("./test.zip", "w" );
fputs($fp, $value);
fclose( $fp );
# 解凍
$inflating_file = exec( 'unzip -o '."./test.zip" );
# CSVファイル名取得
$inflating_file = trim( str_replace( 'inflating:', '', $inflating_file ) );
# CSVファイルの展開
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
for ($c=0; $c < $num; $c++) {
}
}
fclose($handle);
お礼
ありがとうございます。友達に右クリックで解凍できると言われ、試したができず困ってました。さっそくやってみます。