• 締切済み

Powerpoint形式を判別できません

現在、PHPにてファイルアップロードの機能を実装しています。 PowerPoint形式のファイルをアップロードさせるために、 PowerPoint形式以外のファイルをアップロード禁止制限を掛けようと考えています。 下記のような分岐処理をしても、2003形式の .ppt 形式のファイル、 2007形式の .pptx 形式のファイルを判別する事ができません。 2003、2007それぞれのMIME設定で、これらのファイル形式を判別するにはどうすればよろしいでしょうか? # PowerPoint2003形式のファイルではないか? if( $imgFileType != "application/vnd.ms-powerpoint" ) {  # PowerPoint2007形式のファイルではないか?  if( $imgFileType != "application/vnd.openxmlformats-officedocument.presentationml.presentation" ) {   (エラーメッセージ『アップロードできないファイル形式です。』を表示)  } } によりファイル形式を判別させているのですが、 予期した通りに動作せず、どちらのファイル形式をアップロードしても 『アップロードできないファイル形式です。』のエラーとなってしまいます。 MIMEタイプの変数 $imgFileType の値が、  PowerPoint2003形式のファイル(拡張子 .ppt)をアップロードした場合、"application/octet-stream"  PowerPoint2007形式のファイル(拡張子 .pptx)をアップロードした場合、"application/x-zip-compressed" として格納されてしまいます。 アップロード先は、ロリポップのレンタルサーバで PHPのバージョン = 5.2.17 となっています。 ご教授いただければ幸いです。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.1

$imgFileTypeはどのように取得してますか? そこに問題がありそうな気はしますが・・・ ただ、どのような方法でMime-typeを取得してもそれを100%信頼するのは難しいようです。 http://www.php.net/manual/ja/features.file-upload.post-method.php PHPマニュアルにも載っていますが、ブラウザが正しいmime-typeを送信してくる保証がありません。 また、WEBサーバー側がmime-typeを正しく判定していない可能性もあるかもしれません。 ロリポップがどのような設定を行ってるかによります。 apacheのconfやmime.typesを直接触る事が出来ればよいのですが、難しいですよね。 http://jp2.php.net/manual/ja/function.mime-content-type.php 非推奨になっているようですがmime_content_typeという関数で判別が出来るようですね。 (代わりに推奨してる関数は5.3以降なので使えないと思います) どちらにしてもファイルの偽装などを含め、完全な確認は難しいのではないでしょうか? 私なら今回の環境であれば、制限は拡張子のチェック程度で済ませるかな・・・

kazuyo_46
質問者

補足

こちらの一方的な都合で返信を遅らせてしまい、大変申し訳ございません。 > $imgFileTypeはどのように取得してますか? > そこに問題がありそうな気はしますが・・・ $imgFileType の取得処理は、 $imgFileType = $_FILES['material']['type']; として、PHP側から渡されたMIMEタイプの値を、 そのままの形で格納させています。

関連するQ&A

  • powerpoint viewer 2007

    powerpointをインストールして開こうと思ったら… ファイル?を開かないといけないみたいなんですけど何を開けばいいんでしょうか? 拡張子がpptやpptxのものは見当たらないんですが… 開けなくてすごく困ってます 説明が意味不明で本当に申し訳ないです><

  • PowerPointが開けません

    データ提供をCDーRで頂いたのですがPowerPointのファイルが開けません。 ファイル名が○○.pptxとなっていたのでセキュリティ等の関係で拡張子が変更されているのかと思い、 ".pptx"を".ppt"に直してダブルクリックしました。 わたしのPCにはPowerPoint2000が入っているのですが「この種のファイルは開けない」と読み込めません。 ネットで調べたら、新しいPPで作られたファイルのようなので Word/Excel/PowerPoint 用 Microsoft Office 互換機能パックをインストールしました。 拡張子を元に戻してダブルクリックしても途中まで開けそうになるのですが 「○○.pptxからアウトラインを読み込めません。この種類のファイルに使用できるテキスト変換プログラムがインストールされていません。」というメッセージが出て開けません。 しょうがないのでPowerPoint Viewerでどうかと試してみたのですが、今度はなんと 「PowerPointファイルでないため開けません。」 となって、だめです。 「PowerPointファイルでない」というのは一体どうしたことでしょうか? エクスプローラから「名前の変更」で拡張子を直したのがまずかったのでしょうか? どうすればこのCDーRを開ける出しょうか? このデータを元にレポートを作成しないといけないので、どうかよろしくお願い致します。

  • PowerPoint2007の互換性?(印刷)について

    お世話になります。 WinXPにoffice2007が入っており、PowerPint2007を使っております。 そのソフトを使い、パンフレットを作りました。 互換性を高めるため、いままでの形式で保存しましたが(拡張子ppt) 一部の効果が反映されないため、pptXに保存しなおしました。 しかし、それでも一部の影などの効果がプリンターで印刷されません。 これは、なぜなのでしょうか? プリンターが未対応なのでしょうか・・・? また、このファイルを印刷会社で印刷するのですが、データはやはりpptx形式で保存して渡すべきなのでしょうか? ppt形式でCD-Rに入れて渡したところ、初校がかなりイメージと違っていました。 愚問かもしれませんが、どうか知恵をお貸しください。

  • pptxファイルを見る方法を教えてください。

    メールで添付されてきたファイルがPowerPoint2007で作成されたもののようで、拡張子がpptxとなっています。 私はWindowsXPのSP2を使用していますが、PowerPointのソフトは入っていません。 いろいろ調べた結果、「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック」というものがあるのを知り、それをダウンロードしました。 その後、どうやったかは覚えていないのですが、pptxファイルをpptファイルに変換し、見ることが出来ていました。 ただ、そのPowerPointを見るソフトの画面上でズレがある部分があったので、またいろいろ調べたところ、「PowerPoint Viewer 2007」というものもあるのを知りました。 試しにそれで見てみようとダウンロードしたところ、pptxファイルもpptファイルも見られなくなってしまったのです。 スタートからすべてのプログラムを見ると、「PowerPoint Viewer 2007」はあるのですが、それをクリックしても何も作動しませんし、pptファイルから右クリックし、プログラムから開くを選択して、「PowerPoint Viewer 2007」を選んでも開くことが出来なくないのです。 一度「PowerPoint Viewer 2007」を削除して、「Word/Excel/PowerPoint 2007 ファイル形式用 Microsoft Office 互換機能パック」を入れ直したのですが、それでも見ることが出来ません。 仕事で使わなければいけないので、とても困っています。 どなたか解決方法を知っていたら教えてください。 ちなみにパソコンは詳しくありません。 どうぞよろしくお願い致します。

  • POWERPOINT

    拡張子pptのファイルは、POWERPOINTがなければ、開けないんでしょうか? いろいろなソフトを試していますがだめです。

  • Office2007での新規作成を2003形式に

    WindowsXPのパソコンでOffice2007をつかっているのですが、 Word,Excel,PowerPointのファイルを新規作成すると ファイルタイプが2007の形式(拡張子がdocx,slsx,pptx) で作成されてしまうのですが、 新規作成した時のデフォルトを2003形式にするには どのようにすればよいのでしょうか? よろしくお願いいたします。

  • PowerPointファイルの保存方法について

    パワーポイントのファイルの保存方法について伺います。 私は昨年9月にWindows7のパソコンを購入しました。 パワーポイントを使ってファイルを作成し、 メールでファイルを相手に送信しましたが 相手が古いパワーポイントを使用しているため ファイルが開けないとのことです。 拡張子がpptでないと開けないので ppt拡張子で保存して送りなおして下さいと 頼まれました。 どなたか保存方法を教えて頂けないでしょうか。 現状ではpptxの拡張子になっています。

  • PowerPointのWebページ

    PowerPointのファイル(.ppt)を「Webページとして保存」したあと、削除してしまった場合、 残ったHTML形式のファイルからもう一度PowerPointファイル(.ppt)に戻すことはできるのでしょうか。 Webページに変換した時点でアニメーションなどは失われていると思うのですが、できる範囲で戻したいのです。。。

  • 拡張子のないファイルが何であるか判別したい

    手元に、拡張子のない、100MB近くのファイルがあります。 極窓で判別させようとしたのですが、「?」とでて、わかりませんでした。 なんとか判別させたいのですが、どうすれば判別できますでしょうか? 手当たり次第、pptとか、aviとかやってみたのですが・・

  • PowerPoint 名前を付けて jpeg 保存

    友人が作成した*.pptファイル(2ファイル、各1スライド)をPowerPointで開き、jpeg形式で保存し、IEで開いたところ、2つの画面の大きさ(見た目の大きさ)が違います。 考えられる原因は何でしょう? もちろん、元の*.pptファイルをPowerPointで開いた状態での見た目の大きさは同じです。 *.pptファイルを作成した当人とは連絡が取れず、悩んでいます。

専門家に質問してみよう