Heim >php教程 >php手册 >Ausführliche Erläuterung der Grundlagen des PHP-Dateisystems_php

Ausführliche Erläuterung der Grundlagen des PHP-Dateisystems_php

WBOY
WBOYOriginal
2016-05-16 09:00:221707Durchsuche

Dateiverarbeitungsfunktion
1. Dateioperation:
Wenn die angegebene Datei geöffnet wird, wird das entsprechende Objekt zurückgegeben automatisch erstellt werden.
Resource fopen(string filename, string mode [,int use_include_path][,resource context]);
Filename kann ein Dateiname sein, der einen Dateipfad enthält, oder es kann eine von einem bestimmten Protokoll angegebene URL sein (to Öffnen Sie eine Remote-Datei. Um die durch Systemwechsel verursachten Probleme zu vermeiden, wird „/“ als Pfadtrennzeichen verwendet Modus, der Dateizeiger befindet sich am Kopf der Datei
r+: Nur-Lese-Modus – Lese-/Schreibmodus, der Dateizeiger befindet sich am Kopf der Datei
w: Nur-Schreibmodus, der Dateizeiger befindet sich am Anfang der Datei. Löschen Sie den Inhalt. Andernfalls erstellen Sie die Datei selbst.
   -Dateien lesen und schreiben, der Lese-/Schreibdateizeiger zeigt auf den Dateikopf. Wenn die Datei vorhanden ist, löschen Sie den Inhalt und schreiben Sie sie neu.
Der Schreibmodus öffnet die Datei existiert, gibt false zurück und generiert eine Fehlermeldung der Stufe E_WARNING
a: Anhängen, der Dateizeiger zeigt auf das Ende der Datei. Wenn die Datei vorhanden ist, hängen Sie sie andernfalls direkt an das Ende der Datei an .
a+: Anhängen, der Dateizeiger zeigt auf das Ende der Datei, anhängen oder direkt am Ende der Datei lesen.
b: Binärmodus. Wird zum Verknüpfen mit anderen Modi verwendet. (Option unter Windows)
t: Wird zum Kombinieren mit anderen Modi verwendet (Option unter Windows).
Bitte verwenden Sie die Funktion fopen() mit Vorsicht, da die Datei versehentlich gelöscht werden kann. Gleichzeitig haben die Betriebssysteme unterschiedliche Zeilenendegewohnheiten (UNIX:n Windows:rn Macinitosh:r). Wenn das Zeilenendezeichen falsch verwendet wird, werden beim Öffnen der Datei möglicherweise eine Reihe verstümmelter Zeichen ausgegeben Um dies zu vermeiden, kann „'t'“, „‘b‘“ übergeben werden handle. Wenn EOF auftritt, dann Return false;
String fgets(int handle[,int length]);//Holen Sie sich eine Zeichenzeile von der Position, auf die der Dateizeiger zeigt, und geben Sie eine Zeichenfolge von bis zu zurück length-1 Bytes. Der Dateizeiger muss gültig sein und auf eine Datei verweisen, die erfolgreich von fopen() oder fsockopen() geöffnet wurde. Die Länge gibt die Länge der gelesenen Daten an. Sie endet, wenn eine neue Zeile, ein EOF oder eine angegebene Länge gefunden wird . Länge ignorieren wird bis zum Ende der Zeile gelesen (int handle,int length);//Daten beliebiger Länge aus der Datei lesen. , kann auch zum Lesen von Binärdateien verwendet werden. handle ist eine Ressource, die auf die Datei verweist, length liest Längenbytes oder stoppt die Ausführung, wenn EOF auftritt.
Beispiel:



Code kopieren

Der Code lautet wie folgt:


$filename="./files.text";

$fp=fopen($finename,"rb"); $encho fread($fp,100); 🎜>
readfile(), file() und file_get_contents()
readfile(), file() und file_get_contents()
 int readfile(string filename[,bool use_include_path,resource context]); //Eine Datei lesen und in den Puffer schreiben. Bei Erfolg die Anzahl der gelesenen Bytes zurückgeben, andernfalls false zurückgeben. Dateiname Dateiname. Der Parameter use_include_path steuert, ob die Suche nach Dateien in include_path unterstützt werden soll, und true bedeutet, dass dies unterstützt wird. Es ist nicht erforderlich, die Datei mit der Funktion „readfile“ zu öffnen/schließen.
 array file(string filename [,bool use_include_path[,resource context]]);//Lesen Sie den Inhalt der gesamten Datei in das Array. Bei Erfolg wird ein Array zurückgegeben, das einer entsprechenden Zeile in der Datei entspricht, andernfalls wird false zurückgegeben:
string filename[,bool use_include_path[,resource context[,int offset; [,int maxlen]]]]);//context ist neuer Inhalt in 5.0 und kann mit NULL ignoriert werden. offset, maxlen ist der Inhalt von 5.1. offset wird verwendet, um die Startposition der Datei zu markieren, und maxlen legt die Länge der gelesenen Datei fest. Diese Methode eignet sich zum Lesen von Binärdateien. Ist die bevorzugte Methode zum Einlesen des Inhalts einer Datei in eine Zeichenfolge. Sofern vom Betriebssystem unterstützt, wird auch die Speicherzuordnungstechnologie zur Leistungssteigerung eingesetzt. Wenn Sie eine URL mit Sonderzeichen (z. B. Leerzeichen) öffnen, verwenden Sie urlencode(), um die URL zu kodieren.

Hinweis: readfile(), file() und file_get_contents() müssen beim Lesen des Inhalts des gesamten Ordners nicht die Funktionen fopen() und fclose() verwenden, sondern beim Lesen eines Zeichens, einer Zeile Zeichen und beliebiger Zeichenlänge.

2. In Datei schreiben:
 int fwrite(resource handle,string[,int length]);// Dateischreibvorgang ausführen, es hat auch einen Alias ​​fputs () . Mit dieser Methode wird der Inhalt der Zeichenfolge in das Dateizeigerhandle geschrieben. Wenn die Länge festgelegt ist, stoppt der Vorgang, nachdem Längenbytes geschrieben wurden oder die Zeichenfolge geschrieben wurde. Gibt „true“ zurück, wenn der Schreibvorgang erfolgreich war, andernfalls wird „false“ zurückgegeben.
Hinweis: Wenn der Längenparameter angegeben ist, wird die Option magic_quotes_runtime in der Datei php.ini ignoriert und die Schrägstriche in der Zeichenfolge werden nicht entfernt. Um zwischen Binärdateien und Textdateisystemen zu unterscheiden, muss beim Öffnen der Datei „b“ zum Modusparameter der Funktion fopen() hinzugefügt werden.
  int file_put_contents(string filename,string data[.int flags[,resource context]]);//Schreiben Sie eine Zeichenfolge in die Datei und geben Sie bei Erfolg die Anzahl der Bytes zurück, andernfalls geben Sie false zurück. Flags: Sperren von Dateien implementieren (Optionen umfassen file_use_include_path, file_append: append, lock_ex: exklusive Sperre). context eine Kontextressource.
Hinweis: Obwohl fwrite() die Funktion hat, Dateien zu schreiben, muss es von den Funktionen fopen() und fclose() unterstützt werden. file_put_contents () integriert die Funktionen von fopen (), fwrite () und fclose () und kann das Schreiben von Dateien unabhängig abschließen.
3. Schließen Sie die Datei
Sobald die Datei geöffnet ist, sollte sie über eine Schließfunktion verfügen. Nachdem der Vorgang für die Datei abgeschlossen ist, kann es zu Fehlern kommen .
bool fclose(resouce handle);//Schließen Sie die Datei, auf die der Parameter handle zeigt, geben Sie bei Erfolg true zurück, andernfalls geben Sie false zurück.

Datei sperren
Wenn Sie Daten in eine Textdatei schreiben, müssen Sie die Datei zuerst sperren, um zu verhindern, dass andere Benutzer gleichzeitig den Inhalt der Datei ändern. Die Dateisperre wird in PHP über die Funktion flock() implementiert.
 bool flock(int handle,int operation);// Der Parameter operation steuert die Sperrberechtigung. Einschließlich: lock_sh: Gemeinsame Sperre (Leser) erhalten. lock_ex: Erhalten Sie eine exklusive Sperre (Schreiben). lock_un: Sperre aufheben. lock_nb: Verhindert, dass die flock()-Funktion beim Sperren blockiert.

Verzeichnisverarbeitungsfunktion
  Verzeichnis ist eine besondere Art von Datei. Da es sich um eine Datei handelt, müssen Sie sie zuerst öffnen, dann durchsuchen und schließlich daran denken, sie zu schließen, wenn Sie sie bearbeiten möchten.

1. Öffnen Sie das Verzeichnis

Öffnen Sie die angegebene Verzeichnisdatei. Geben Sie bei Erfolg das Verzeichnis-Handle zurück. Andernfalls wird false zurückgegeben. Anders als beim Öffnen einer Datei wird das Verzeichnis nicht automatisch erstellt, wenn das Verzeichnis nicht vorhanden ist, sondern es wird eine Fehlermeldung ausgegeben. Durch das Hinzufügen des „@“-Symbols vor der opendir()-Funktion können Sie die Ausgabe von Fehlermeldungen blockieren.
Resource opendir(string path[,resource context]);//path gibt die zu öffnende Verzeichnisdatei an. Wenn der angegebene Pfad kein gültiges Verzeichnis ist oder der Dateisystemfehler aufgrund von Berechtigungsproblemen nicht geöffnet werden kann, gibt diese Funktion „false“ zurück und generiert eine Fehlermeldung der Stufe E_WARNING.

2. Durchsuchen Sie das Verzeichnis


Verwenden Sie das von der opendir-Funktion und der scandir-Funktion zurückgegebene Handle, um den Browsing-Vorgang zu implementieren.
 array scandir(string verzeichnis[,int sorting_ordering[,resource context]]);//Wird zum Durchsuchen von Verzeichnissen und Dateien unter dem angegebenen Pfad verwendet. Gibt bei Erfolg ein Array mit den Dateinamen zurück, andernfalls wird false zurückgegeben. Verzeichnis gibt das zu durchsuchende Verzeichnis an. Wenn es sich nicht um ein Verzeichnis handelt, wird false zurückgegeben und eine Fehlermeldung der Stufe E_WARNING generiert. sorting_order legt die Sortierreihenfolge fest, die Standardeinstellung ist alphabetisch aufsteigend. Wenn dieser Parameter angegeben wird, wird in absteigender Reihenfolge sortiert.
Bemerkungen: Die Funktion is_dir() ermittelt, ob der angegebene Dateiname ein Verzeichnis ist.Gibt true zurück, wenn der Dateiname existiert und ein Verzeichnis ist, andernfalls false. Wenn es sich um ein relatives Verzeichnis handelt, wird sein relativer Pfad mit dem aktuellen Arbeitsverzeichnis verglichen.

3. Schließen Sie das Verzeichnis.

void geschlossenir(resource handle);//handle, das Handle des Arbeitsverzeichnisses, das geschlossen werden soll.

Hinweis: Wie wir bereits erfahren haben, hilft uns das System nicht bei der Erstellung des Verzeichnisses, wenn das geöffnete Verzeichnis nicht existiert. Dann können wir das gewünschte Verzeichnis selbst erstellen. Die folgenden Funktionen können angewendet werden:
mkdir()-Funktion: Erstellen Sie ein neues Verzeichnis und geben Sie bei Erfolg true zurück, andernfalls false.
 RMdir()-Funktion: Verzeichnis löschen. Das Verzeichnis muss leer sein (keine Dateien oder Unterverzeichnisse im Verzeichnis) und über Betriebsberechtigungen verfügen.
unlink()-Funktion: löscht Dateien, gibt true zurück, wenn erfolgreich, false, wenn fehlgeschlagen.

Prinzip des Datei-Uploads und -Downloads
  
Schrittinhalt:
Schritt 1: Steuern Sie die hochgeladene Datei und konfigurieren Sie sie über die Datei php.ini.
Schritt 2: Beurteilen Sie die hochgeladene Datei. Dateigröße, Format usw. hochladen.
Schritt 3: Führen Sie die Vorgangsmethode zum Hochladen von Dateien durch.

1. Hochgeladene Dateien kontrollieren:

PHP steuert hochgeladene Dateien über php.ini, einschließlich: ob das Hochladen unterstützt werden soll, das temporäre Verzeichnis der hochgeladenen Dateien und die hochgeladenen Dateien Die Größe, die Ausführungszeit des Befehls und der vom Befehl zugewiesene Speicherplatz.
Suchen Sie die Option zum Hochladen von Dateien in der Datei php.ini und nehmen Sie die Einstellungen für die oben genannten Optionen vor. Die Bedeutung der Optionen ist wie folgt:
file_uploads: Wenn es aktiviert ist, bedeutet dies, dass der Server das Hochladen von Dateien unterstützt. Wenn es deaktiviert ist, wird es nicht unterstützt. Im Allgemeinen wird es standardmäßig unterstützt und diese Option muss nicht geändert werden.
Upload_tem_dir: Temporäres Verzeichnis für hochgeladene Dateien. Bevor der Datei-Upload erfolgreich ist, wird die Datei zunächst im temporären Verzeichnis des Servers gespeichert. Die meisten verwenden das Standardverzeichnis des Systems, Sie können es jedoch auch selbst festlegen.
Upload_max_filesize: Die maximale Größe der Dateien, die vom Server hochgeladen werden dürfen, in MB. Der Systemstandard beträgt 2 MB. Wenn dieser Wert überschritten wird, muss der Wert geändert werden.
max_execution_time: Die maximale Zeit, die ein Befehl in PHP ausgeführt werden kann, in Sekunden. Dieser Befehl muss geändert werden, wenn sehr große Dateien hochgeladen werden. Andernfalls liegt das rechtzeitige Hochladen von Dateien innerhalb des vom Server zugelassenen Bereichs. Wenn jedoch die maximale Zeit überschritten wird, in der der Befehl ausgeführt werden kann, ist das Hochladen immer noch nicht möglich.
Memory_limit: Der durch einen Befehl in PHP zugewiesene Speicherplatz in MB. Seine Größe wirkt sich auch auf das Hochladen sehr großer Dateien aus.

Bemerkungen: Bei der Steuerung der Anwendung zum Hochladen von Dateien im Client werden die Attribute enctype und method im Formular sowie das ausgeblendete Feld MAX_FILE_SIZE verwendet: Geben Sie die Datenmethode für die Formularkodierung an.
Method="post": Geben Sie die Methode der Datenübertragung an.
 : Steuern Sie die Größe der hochgeladenen Datei über das ausgeblendete Feld in Bytes. Dieser Wert darf den durch die Option upload_max_filesize in der Konfigurationsdatei php.ini festgelegten Wert nicht überschreiten. Die Größe der hochgeladenen Dateien kann nicht vollständig kontrolliert werden, es können lediglich einige unnötige Probleme vermieden werden.


2. Hochgeladene Dateien bestimmen
Die globale Variable $_FILES wird verwendet, um hochgeladene Dateien zu beurteilen. Die Bedeutung jedes Elements im Array ist wie folgt:
 $_FILES[Dateiname][Name]: Speichert den Dateinamen der hochgeladenen Datei, z. B. text.txt, title.jpg usw.
 $_FILES[Dateiname][Größe]: Die Größe der gespeicherten Datei in Bytes.
 $_FILES[Dateiname][tem_name]: Der Dateiname, der zum Speichern der Datei im temporären Verzeichnis verwendet wird, da die Datei beim Hochladen zunächst als temporäre Datei im temporären Verzeichnis gespeichert werden muss.
 $_FILES[Dateiname][Typ]: MIME-Typ, der hochgeladene Dateien speichert. MIME gibt die Typen verschiedener Dateiformate an. Jeder MIME-Typ besteht aus einem Haupttyp und einem durch „/“ getrennten Untertyp. Beispiel: Der Haupttyp von „image/gif“ ist „Bild“ und der Untertyp ist „Datei im GIF-Format“. „text/html“ stellt eine HTML-Textdatei dar.
 $_FILES[Dateiname][Fehler]: Speichert den Fehlercode des Datei-Uploads: Dieses Element ist ein neuer Inhalt in der PHP4.2.0-Version. Es gibt 5 Arten von Rückgabewerten:
0: Zeigt an, dass kein Fehler vorliegt. Datei erfolgreich hochgeladen.
1: Zeigt an, dass die Größe der hochgeladenen Datei den Grenzwert der Option upload_max_filesize der Konfigurationsdateianweisung überschreitet.
2: Zeigt an, dass die Größe der hochgeladenen Datei den durch die Option max_file_size im HTML-Formular angegebenen Wert überschreitet.
3: Zeigt an, dass nur ein Teil der Datei hochgeladen wurde.
4: Zeigt an, dass keine Dateien hochgeladen wurden.
Beispiel:

Code kopieren Der Code lautet wie folgt:

/*Déterminer s'il faut télécharger la photo*/
if(!empty($_FILES['up_picture'][name])){
/*Changer les informations sur l'image sont affectées aux variables*/
$type=strtolower(strstr($_FILES['up_picture'][name],"."));
if($type != '.jpg' && $type ! = '.gif') echo "Le format de fichier que vous avez téléchargé est incorrect"
else{
if($_FILES['up_picture'][size]<2000000 && $_FILES['up_picture' ][size] >0){
echo "Nom du fichier de téléchargement :".$_FILES['up_picture'][name]."
"
echo "Type de fichier de téléchargement :" .$type. "
";
echo "Taille du fichier de téléchargement :".$_FILES['up_picture'][size]."
"
}sinon echo "La taille de l'image ne répond pas aux exigences. "
}
}
?>


3.

Appliquez la fonction move_uploaded_file() en php pour implémenter le téléchargement de fichiers. Mais avant l'exécution, afin d'empêcher des attaques potentielles de gérer illégalement des fichiers avec lesquels il est impossible d'interagir via des scripts, vous pouvez d'abord utiliser la fonction is_uploaded_file() pour déterminer si le fichier spécifié a été téléchargé via HTTP POST et, si c'est le cas, renvoyer true. Cette fonction garantit que les utilisateurs malveillants ne peuvent pas tromper les scripts pour qu'ils accèdent à des fichiers inaccessibles.
bool is_uploaded_file(string name);//Utilisé pour déterminer si le fichier spécifié a été téléchargé via HTTP POST. le nom de fichier doit être une variable similaire à $_FILES['filename']['temp_name']. Le nom de fichier téléchargé depuis le client ne peut pas être utilisé.

 move_upload_file(string filename,string destination);//Cette fonction est utilisée pour télécharger des fichiers à l'emplacement spécifié sur le serveur. Renvoie vrai en cas de succès, faux sinon. filename spécifie le nom de fichier temporaire du fichier téléchargé, c'est-à-dire $_FILES['tmp_name'], et le paramètre destination spécifie le nouveau chemin et le nom du fichier enregistré après le téléchargement. Si le paramètre n'est pas un fichier téléchargé légal, aucune opération n'aura lieu et la fonction retournera false. S'il s'agit d'une opération de téléchargement légale mais qu'elle ne peut pas être déplacée pour une raison quelconque, aucune opération n'aura lieu et un avertissement sera émis lors du renvoi de false.
Copier le code Le code est le suivant :

if( !empty( $_FILES[ 'up_picture' ][ 'name' ])){
if( $_FILES['up_picture']['error'] > 0){
echo "Erreur de téléchargement !";
switch($_FILES['up_picture']['error']){
case 1 :
echo "Le fichier téléchargé dépasse la valeur spécifiée dans le fichier de configuration"
break; >case 2 :
echo "Le fichier téléchargé dépasse la valeur spécifiée du formulaire" ;
break;
case 3 :
echo "Le fichier téléchargé est incomplet"
break; 🎜>cas 4 :
echo "Aucun fichier téléchargé ";
break;
}
}else{
if( ! is_dir('./upfile/') ) mkdir('. /upfile/');
$path=' ./upfile/'.time().$_FILES['up_picture' ][ 'name' ]; [ 'tmp_name' ] )){
if( !move_uploaded_file( $_FILES['up_picture' ][ 'tmp_name' ] ,$path )){
echo "Le téléchargement a échoué !"
}else{;
echo "File".time().$ _FILES['up_picture' ][ 'name' ] ."Téléchargement réussi, la taille est : ".$_FILES['up_picture' ][ 'size' ] ; }
}else{
echo "Télécharger le fichier ".$_FILES['up_picture' ][ 'name' ]."Illégal"
}
}
}
?> ;




4. Téléchargement de fichiers


Nous introduisons ici le téléchargement de fichiers via http, principalement en utilisant la fonction header(). La fonction header() est une fonction HTTP. Sa fonction est d'envoyer l'en-tête du document HTML au navigateur via HTTP et d'indiquer au navigateur comment traiter cette page. void header(string string[,bool replace[,int http_respone_code]]);//Le paramètre string spécifie l'en-tête à envoyer. Le paramètre replace contrôle si les en-têtes similaires sont remplacés ou ajoutés si plusieurs en-têtes sont envoyés à la fois. Si faux, plusieurs en-têtes du même type sont forcés d’être envoyés. La valeur par défaut est true. Le paramètre http_respone_code force le code de réponse HTTP à être défini sur la valeur spécifiée :
Les étapes de téléchargement sont les suivantes :
a) : Spécifiez le type MIME du fichier via "Content-Type".
b) : Décrivez le fichier via "Content-Disposition", la valeur "attachment;filename="test.jpg"" indique qu'il s'agit d'un Fujian, et précise également le nom du fichier téléchargé.
c) : Définissez la taille du fichier téléchargé via "Content-Length".
d) : Lisez le contenu du fichier via la fonction readfile().
Par exemple :




Copier le code
Le code est le suivant : header(' Content-Type : image/jpg'); header(' Content-Disposition:attachment;filename="test.jpg" ');
header('Content-Length:'.filesize('test.jpg) ') );
readfile('test.jpg');



5. Accéder aux fichiers distants

Étape 1 : Configurez l'option du fichier php.ini allow_url_fopen sur on. Le paramètre est activé par défaut, permettant l'ouverture des fichiers distants spécifiés par http et ftp. Si Allow_url_fopen est désactivé, les fichiers distants ne peuvent pas être ouverts.
Étape 2 : Utilisez la fonction fopen() pour lire le contenu du fichier. Créez les ressources souhaitées en fonction du contenu et enregistrez-les localement.
   
ps : Pour plus de méthodes d'extension des opérations sur les fichiers et les opérations sur les répertoires dans le fichier de configuration php.ini, veuillez vous référer au guide PHP officiel.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn