Position actuelle: Accueil> Derniers articles> Que peut être utilisé pour coopérer avec FOPEN? Partagez comment détecter rapidement les fichiers locaux

Que peut être utilisé pour coopérer avec FOPEN? Partagez comment détecter rapidement les fichiers locaux

gitbox 2025-09-24

1. Qu'est-ce que Stream_is_local ?

Stream_IS_Local est une fonction intégrée dans PHP. Sa fonction consiste à vérifier si un fichier ou un flux est un fichier dans le système de fichiers local. Cette fonction renvoie une valeur booléenne et renvoie True si le flux donné est un fichier du système de fichiers local, sinon renvoie false .

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span> ( resource </span><span><span class="hljs-variable">$stream</span></span><span> )
</span></span>

Description du paramètre:

  • $ Stream : Il s'agit d'une ressource de flux valide (la ressource de flux peut être obtenue via la fonction FOPEN ).

2. Comment utiliser fopen et stream_is_local ?

FOPEN est une fonction utilisée dans PHP pour ouvrir des fichiers. Il peut ouvrir des fichiers locaux, des fichiers distants (tels que les protocoles HTTP ou FTP), etc. combinés avec Stream_IS_Local , nous pouvons déterminer si le fichier est stocké dans le système de fichiers local, ce qui est particulièrement utile lorsque le traitement des fichiers local est requis.

Exemple de base:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;

</span><span><span class="hljs-comment">// utiliser fopen Ouvrir le fichier</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-comment">// Déterminez si le fichier est un fichier local</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le fichier est un fichier local。"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le fichier n&#39;est pas un fichier local。"</span></span><span>;
    }

    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法Ouvrir le fichier!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans cet exemple, nous ouvrons le fichier Exemple.txt via FOPEN , si le fichier est ouvert avec succès, utilisons Stream_IS_Local pour vérifier si le fichier est un fichier local.

3. Scénarios d'application pratiques de Stream_IS_Local

Dans le développement réel, Stream_IS_Local peut être appliqué dans plusieurs scénarios, en particulier lorsque le chemin du fichier peut être un chemin local, une URL ou un autre protocole, nous devons déterminer si le fichier est stocké localement.

3.1 Traitement des fichiers téléchargés

Lorsqu'un utilisateur télécharge un fichier, il peut y avoir un chemin de fichier qui est une URL ou un chemin de fichier local. Si vous devez confirmer si le fichier téléchargé est un fichier local, vous pouvez utiliser stream_is_local pour déterminer:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload_file'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>];

</span><span><span class="hljs-comment">// Vérifiez si le fichier téléchargé est un fichier local</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"上传的Le fichier est un fichier local。"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"上传的Le fichier n&#39;est pas un fichier local。"</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Impossible de lire les fichiers téléchargés!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3.2 Distinguer les fichiers distants et les fichiers locaux

Dans certains cas, il peut être nécessaire de décider des opérations suivantes en fonction de la source du fichier (local ou distant). Par exemple, si vous avez besoin de télécharger des fichiers, vous pouvez hiérarchiser les fichiers locaux, sinon les téléchargements de fichiers distants sont effectués.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'https://example.com/file.txt'</span></span><span>;

</span><span><span class="hljs-comment">// passer fopen Ouvrir le fichier流</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ceci est un fichier local,Effectuer des opérations de fichiers locaux。"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ceci est un fichier distant,Effectuer une opération de téléchargement de fichiers distantes。"</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法Ouvrir le fichier!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. Choses à noter

  • Stream_IS_Local ne convient que pour les ressources en streaming. S'il ne s'agit pas d'une ressource de flux valide qui lui est transmise, la fonction renvoie False .

  • Cette fonction ne peut être utilisée que pour déterminer si le flux de fichiers provient du système de fichiers local et ne peut pas déterminer le contenu réel, les autorisations ou l'existence du fichier.

5. Résumé

La combinaison de Stream_is_local et FoPen peut efficacement aider les développeurs à déterminer rapidement si un fichier provient du système de fichiers local lors du traitement des fichiers. Ceci est très pratique dans de nombreux scénarios d'application, en particulier lorsqu'il est nécessaire de distinguer les fichiers locaux et distants. Grâce à ces deux fonctions, nous pouvons facilement prendre des décisions opérationnelles correspondantes et améliorer l'efficacité du développement.

  • Étiquettes associées:

    fopen