PHPでは、 finfo_file()は、ファイルのmimeタイプまたはその他の情報を取得するために一般的に使用される関数です。通常、 FINFO_FILE()関数はファイルのMIMEタイプを返します。また、より詳細な情報を取得したり、返品値の形式を変更したりするなど、出力形式をより正確に制御する場合は、 FINFO :: SET_FLAGS()メソッドを使用して実行できます。
finfo :: set_flags()は、 Finfoクラスの方法であり、ファイル情報の抽出方法を制御できます。フラグビットを設定することにより、特定のニーズに合わせてFINFO_FILE()関数の動作を調整できます。
この記事では、finfo :: set_flags()を使用してfinfo_file()の出力形式を変更する方法を詳細に紹介します。
finfo :: set_flags()は、 finfoクラスのメソッドです。ファイル情報を取得するときに追加のフラグを設定するために使用できます。これらのフラグは、ファイル情報によって返される特定の形式とコンテンツを制御します。 finfo :: set_flags()メソッドは、ファイルの解析動作に影響する1つ以上の定数フラグを受け入れます。
一般的に使用されるフラグ定数は次のとおりです。
fileInfo_mime_type :mimeタイプ(デフォルトの動作)を返します。
fileinfo_mime_encoding :mimeエンコードを返します。
fileInfo_text :ファイルがテキストファイルであるかどうかを返します。
fileInfo_preserve_atime :ファイルを開くときは、ファイルの最後のアクセス時間を保持します。
まず、 set_flags()メソッドを使用するには、 finfoオブジェクトを作成する必要があります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 作成する finfo 物体</span></span><span>
</span><span><span class="hljs-variable">$finfo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">finfo</span></span><span>(FILEINFO_MIME);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
FINFOオブジェクトが上に作成され、デフォルトのMIMEタイプフラグが指定されています。
SET_FLAGS()メソッドを使用して、 FINFOオブジェクトに追加のフラグを追加して、ファイル情報の取得方法を制御できます。論理または演算子を使用して、複数のフラグを組み合わせることができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 設定 FILEINFO_MIME_TYPE そして FILEINFO_MIME_ENCODING ロゴ</span></span><span>
</span><span><span class="hljs-variable">$finfo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_flags</span></span><span>(FILEINFO_MIME_TYPE | FILEINFO_MIME_ENCODING);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
上記のコードは2つのフラグを設定します。
fileInfo_mime_type :ファイルのmimeタイプを返します。
fileinfo_mime_encoding :mimeエンコードを返します。
フラグが設定されたら、 finfo_file()関数を使用してファイル情報を取得できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 使用 finfo_file ファイルを取得します MIME 类型そして编码</span></span><span>
</span><span><span class="hljs-variable">$fileInfo</span></span><span> = </span><span><span class="hljs-variable">$finfo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">file</span></span><span>(</span><span><span class="hljs-string">'example.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// 出力ファイル MIME 类型そして编码</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fileInfo</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
fileInfo_mime_typeおよびfileinfo_mime_encodingに加えて、 Finfoクラスは他の一般的なフラグも提供します。
fileInfo_mime :ファイルのmimeタイプを返します(エンコーディングを除く)。
fileInfo_text :ファイルがテキストファイルであるかどうかを判断します。
fileInfo_devices :ファイルがデバイスファイルの場合、デバイスタイプが返されます。
たとえば、ファイルのMIMEタイプを取得し、テキストファイルかどうかを判断する場合は、次のコードを使用できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 設定 FILEINFO_MIME そして FILEINFO_TEXT ロゴ</span></span><span>
</span><span><span class="hljs-variable">$finfo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_flags</span></span><span>(FILEINFO_MIME | FILEINFO_TEXT);
</span><span><span class="hljs-comment">// ファイル情報を取得します</span></span><span>
</span><span><span class="hljs-variable">$fileInfo</span></span><span> = </span><span><span class="hljs-variable">$finfo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">file</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-comment">// 出力ファイル情報</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fileInfo</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
複数のファイルがあり、ファイルの種類とエンコードに従ってそれらを処理したいとしたら、これを行うことができます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 作成する finfo 物体</span></span><span>
</span><span><span class="hljs-variable">$finfo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">finfo</span></span><span>(FILEINFO_MIME);
</span><span><span class="hljs-comment">// 設定ロゴ,得る MIME 类型そして编码</span></span><span>
</span><span><span class="hljs-variable">$finfo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_flags</span></span><span>(FILEINFO_MIME_TYPE | FILEINFO_MIME_ENCODING);
</span><span><span class="hljs-comment">// ファイルリスト</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = [</span><span><span class="hljs-string">'example.jpg'</span></span><span>, </span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-string">'example.mp4'</span></span><span>];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
</span><span><span class="hljs-comment">// ファイル情報を取得します</span></span><span>
</span><span><span class="hljs-variable">$fileInfo</span></span><span> = </span><span><span class="hljs-variable">$finfo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">file</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-comment">// 输出文件类型そして编码</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"File: <span class="hljs-subst">$file</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"MIME Type and Encoding: <span class="hljs-subst">$fileInfo</span></span></span><span>\n\n";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
finfo :: set_flags()メソッドを使用して、 finfo_file()によって返されたファイル情報形式を柔軟に調整できます。特定のニーズに応じて、異なるフラグを設定して、ファイルタイプ、エンコーディングなど、テキストファイルであるかどうかなどのより詳細な情報を取得できます。これにより、特に複数のタイプのファイルを処理する場合、コードの柔軟性と信頼性を向上させる場合、ファイルタイプをより正確に処理および解析することができます。
ロゴを合理的に構成することにより、ファイル情報取得の正確性と完全性を確保することができ、ファイルアップロードやファイル検証などの機能の開発をより適切にサポートできます。