• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでZipの中身を知りたい)

PHPでZipの中身を知る方法とは?

このQ&Aのポイント
  • PHPを使用して、Zipファイルの中身を取得したい場合、アップロードされたファイルのファイル形式を判別する必要があります。
  • Zipファイルは元のファイル形式が分からないため、アップロード時にファイルの拡張子などをチェックすることができません。
  • しかし、Zipファイルの中身のファイル名一覧を取得することで、ファイル形式を推測することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Dags
  • ベストアンサー率78% (11/14)
回答No.2

ZipArchiveクラスの使用 ///// $zipFile = './xxx.zip'; $zip = new ZipArchive(); $zip->open($zipFile); for($i = 0; $i < $zip->numFiles; $i++){ echo 'Filename: ' . $zip->getNameIndex($i) . '<br />'; } ///// 拡張子だけではなく、本当に画像かどうか調べる処理をお勧めします。

参考URL:
http://www.php.net/manual/ja/class.ziparchive.php
changuri
質問者

お礼

お礼が遅れてしまいました。 回答いただいた内容で無事解決できました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • zip.mp3ファイル

    過去ログや他のHPを見ると、zip.mp3形式のファイルを曲ごとに分割するためには 「拡張子のmp3を削除して.zipにする」 との事なので拡張子をzipにした後、LHAplusなどのソフトで解凍しようとすると 「アーカイブファイルではありません。以降のファイルを圧縮しますか?」 との表示が。 極窓で、そのzip.mp3ファイルを判別すると「mp3」となるのですが、この場合は曲ごとに分割するのは不可能なのでしょうか? そこからまた勉強しますので、ヒントでも結構です。 どなたか詳しい方、アドバイスいただけますでしょうか?

  • ZIPファイルが解凍できません。

    WINMXで落としたZIPファイルが、「eo」で解凍できません。 「未知のファイル形式のためスキップしました」というエラーが出ます。 他のZIPファイルはちゃんと解凍できるのですが・・・。 拡張子判別ソフト「WinExChange」を使っても、 「ZIP」ファイルだと判別されました。 OSはXPです。 どうすれば良いのでしょうか??

  • zipファイルのアップロードができません

    どうしてもzipファイルのアップロードができないため、 質問させていただきました。 詳細としましては、 FFFTPを使ってアップロードをしているのですが、 zipファイルが置いてあるはずのURLを指定しても、 「圧縮(zip形式)フォルダー エラー  フォルダーを開くことができません。  圧縮(zip形式)フォルダー””は無効です。 」 というエラーメッセージが表示され、 zipファイルを開くことができません。 また、「名前をつけて保存」をすると、 インターネットエクスプローラーが 勝手に再起動されてしまいます。 FFFTPを自分なりに調べてはみたのですが、 結局原因がよく分からず、 今日に至ります。 大変お手数ですが、 ご指導いただけますようよろしくお願い致します。

  • ニコニコ動画・・・ZIPって?

    ニコニコ動画を見ていたら、たまに「ZIPでください」みたいなコメントがよくありますが、あれはどういう意味ですか? またアップロード者のコメントにも「ZIPにしました」と書いていることもあります。 ZIPといえば圧縮形式だと思いますがZIPでダウンロードできるという意味ですか? もしダウンロードできるのならどうすればいいのですか?

  • zipファイル作成時、フォルダ名にピリオドが入っているとき

    WindowsXPで、フォルダを右クリックして、「送る」-「圧縮(zip形式)フォルダ」をクリックすると、 元のフォルダと同一名で拡張子の異なるZIPファイルが作成されます。 しかし、もとのフォルダ名にピリオドが含まれていると、 ZIPファイルのファイル名がそこで切れてしまいます。(zipという拡張子は付くが。) 例) ABC.EFG ↓ ABC.zip どうすれば自動で、もとのままの名前になるのでしょうか。 フォルダ名には意味があって、後ろが切れるのは困るのです。 zipファイルを作成するのは日常茶飯事なので、 手作業で名前を変えるのは面倒なので、 方法をよろしくお願いします。

  • 「zipでくれ」

    ネットを見てると「zipでくれ」と言うのをたまに見かけますが どういう意味なのでしょうか? 圧縮ファイルの拡張子じゃないですよね?

  • PHP ZIP 展開できない

    PHPで作成したZipファイルが展開できません ダブルクリックで展開すると無効ですと表示されます。 よろしくお願いします。 define("file_zone","C:/MAMP/htdocs/upload/test/"); if(isset($_POST["download"])){ $path = file_zone; $files = scandir($path); $zip = new ZipArchive($files); // Zipファイル名 $zipFileName = "file_" . date("Ymds") .'.zip'; // Zipファイル一時保存ディレクトリ $zipTmpDir = file_zone; // Zipファイルオープン $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE); if ($result !== true) { // 失敗した時の処理 } // 処理制限時間を外す set_time_limit(0); foreach ($files as $filepath) { $filename = basename($filepath); // 取得ファイルをZipに追加していく $zip->addFromString($filename,file_get_contents($filepath)); } $zip->close(); // ストリームに出力 header('Content-Type: application/zip; name="' . $zipFileName . '"'); header('Content-Disposition: attachment; filename="' . $zipFileName . '"'); header('Content-Length: '.filesize($zipTmpDir.$zipFileName)); echo file_get_contents($zipTmpDir.$zipFileName); // 一時ファイルを削除しておく // unlink($zipTmpDir.$zipFileName); }

    • ベストアンサー
    • PHP
  • PHP zipファイルのダウンロード

    下記のようなPHPスクリプトにおいて、zip フォルダに画像ファイルの圧縮ファイルを 保存し、ダウンロードしたいんです。ダウンロードの動作はChrome上で確認できてますが、圧縮した、ダウンロードファイルのサイズが0KB で、空なのです。 どこが間違っているか教えていただけますか? [file_zip.php] <?php mb_internal_encoding("UTF-8"); $ftp = ftp_connect("~"); ftp_login($ftp, "~", "~"); $dir = '/storage2/zip'; ftp_chdir($ftp, $dir); // ディレクトリ移動 // Zipクラスロード $zip = new ZipArchive(); // Zipファイル名 $zipFileName = $_POST['zip_filename']; var_dump($zipFileName); // Zipファイル一時保存ディレクトリ $zipTmpDir = '/storage2/zip'; // Zipファイルオープン $result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE); if ($result !== true) { // 失敗した時の処理 echo '圧縮ファイルをオープンできませんでした'; exit(); } // ここでDB等から画像イメージ配列を取ってくる $image_data_array = array(); array_unshift($image_data_array, $zipTmpDir.$zipFileName); // 処理制限時間を外す set_time_limit(0); foreach ($image_data_array as $filepath) { $filename = basename($filepath); // 取得ファイルをZipに追加していく $zip->addFromString($filename,file_get_contents($filepath)); } $zip->close(); // ストリームに出力 header('Content-Type: application/zip; name="' . $zipFileName . '"'); header('Content-Disposition: attachment; filename="' . $zipFileName . '"'); header('Content-Length: '.filesize($zipTmpDir.$zipFileName)); echo file_get_contents($zipTmpDir.$zipFileName); // 一時ファイルを削除しておく unlink($zipTmpDir.$zipFileName); // header("Location: storage.php"); ?>

    • 締切済み
    • PHP
  • zip圧縮の種類について

    phpで趣味のコーディングをしています。 あるフリーのモジュールをうまく使えなくて困っています。 そのモジュールでは、zip圧縮したファイルをアップロードするところがあるのですが、 $_FILES["upfile"]["type"] が application/zip でないと受け付けてくれません。 しかし、私の環境では、何でzip圧縮しても(lhaz、7zip、WinXPデフォルト機能の3つでzip圧縮を試行)、 $_FILES["upfile"]["type"] は application/x-zip-compressed になってしまいます。 質問は2つあります。 1. application/x-zip-compressed と application/zip は、それぞれどんな圧縮形式なのでしょうか。 2. application/x-zip-compressed のファイルを、 application/zip に変換する方法は無いでしょうか。 以上です。 ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • ファイル容量をZIP圧縮ではなく小さくしたい

    いつもお世話になります。 仕事に必要で作成した図面をあるところにアップロードしようとしたら、「1MB以上はダメ」でした。 1.13MB…惜しいんですが、アップロードできるファイルの拡張子がjpgのみなので圧縮してZIPになると上げられません。 どうしたらよいのでしょうか? フォトショなどで縮めるとか…?アドバイスお願いいたします。

このQ&Aのポイント
  • XK70プリンターでインターネットから印刷できない問題を解決する方法について解説します。
  • canonプリンタークイック印刷からは印刷できるが、インターネット画面からは通信中表示が出て印刷されない問題の解決方法をご紹介します。
  • LANケーブル接続や無線LANでも同様の状況となるため、タブレットや携帯からの印刷でも問題が発生します。そこで、XK70プリンターでインターネットからの印刷ができない場合の対処方法をお伝えします。
回答を見る

専門家に質問してみよう