Comment télécharger un fichier en php

Comment télécharger un fichier en php
Généralement, aucun script PHP n'est requis pour télécharger un fichier avec les extensions exe et zipper. Si l'emplacement du fichier de ce type de fichier est défini dans le href Attribut de l'élément d'ancrage, puis le fichier télécharge automatiquement lorsque l'utilisateur clique sur le lien de téléchargement. Certains fichiers, comme image des dossiers, Pdf des dossiers, texte des dossiers, CSV Fichiers, etc., Ne téléchargez pas automatiquement et ouvrez à la place dans le navigateur lorsque l'utilisateur clique sur le lien de téléchargement. Ces fichiers peuvent être téléchargés de force en php en utilisant le readFile () fonction qui ne télécharge pas automatiquement. Ce tutoriel vous montre comment télécharger de force n'importe quel fichier à l'aide du script php.

Vérifier les liens de téléchargement

Il a été mentionné précédemment que zipper et exe Les fichiers téléchargent automatiquement, sans utiliser le script PHP. Tout d'abord, créez un fichier HTML avec le code suivant. Ici, les quatre éléments d'ancrage sont définis pour télécharger les quatre types de fichiers. Ces types de fichiers incluent des fichiers de texte, zip, pdf et jpg.

Télécharger.html



Telecharger des fichiers


Télécharger le fichier texte


Télécharger le fichier zip


Télécharger le fichier PDF


Télécharger le fichier JPG



Sortir
La boîte de dialogue suivante apparaîtra pour télécharger le fichier après avoir cliqué sur le lien du fichier zip. L'utilisateur peut ensuite télécharger le fichier ou ouvrir le fichier dans le gestionnaire d'archives.


Si vous cliquez sur le fichier image, l'image sera ouverte automatiquement dans le navigateur, comme indiqué dans la sortie suivante. Vous devez enregistrer le fichier pour faire une copie du fichier image dans le lecteur local. De la même manière, lorsque vous cliquez sur PDF et les liens de fichier texte, le contenu du fichier sera ouvert dans le navigateur sans télécharger le fichier. La solution à ce problème est de télécharger le fichier de force en utilisant le PHP intégré readFile () fonction.

Télécharger le fichier à l'aide de la fonction readFile ()

Le readFile () La fonction est utilisée dans PHP Script pour télécharger de force n'importe quel fichier de l'emplacement actuel, ou le fichier avec le chemin du fichier. La syntaxe de cette fonction est donnée ci-dessous.

Syntaxe
int liadfile (string $ filename [, bool $ use_include_path = false [, ressource $ context]])

Cette fonction peut prendre trois arguments. Le premier argument est obligatoire, et les deux autres arguments sont facultatifs. Le premier argument, $ nom de fichier, stocke le nom de fichier ou le nom de fichier avec le chemin qui téléchargera. La valeur par défaut du deuxième paramètre, $ use_include_path, est faux et sera défini sur vrai si le nom de fichier avec le chemin est utilisé dans le premier argument. Le troisième argument, $ Context, est utilisé pour indiquer la ressource de flux de contexte. Cette fonction renvoie le nombre d'octets lus à partir du fichier mentionné dans le premier argument. Les utilisations de cette fonction sont présentées dans les deux exemples suivants.

Exemple 1: Télécharger le fichier avec le nom de fichier

Dans cet exemple, nous créerons un fichier HTML avec le code suivant, où le nom du fichier sera passé comme paramètre de l'URL nommé chemin, et la valeur de ce paramètre sera transmise au fichier PHP nommé télécharger.php.

téléchargement2.html



Telecharger des fichiers


Télécharger le fichier texte


Télécharger le fichier zip


Télécharger le fichier PDF


Télécharger le fichier JPG



Nous créerons le fichier PHP avec le code suivant pour télécharger le fichier de force. Ici le isset () La fonction est utilisée pour vérifier si le $ _Get ['path'] est défini. Si la variable est définie, le le fichier existe() La fonction est utilisée pour vérifier si le fichier existe dans le serveur. Ensuite, le entête() La fonction est utilisée pour définir les informations d'en-tête nécessaires avant d'utiliser readFile () fonction. Le Basename () La fonction est utilisée pour récupérer le nom de fichier et le taille du fichier() La fonction est utilisée pour lire la taille du fichier en octets, qui sera affiché dans la boîte de dialogue d'ouverture pour télécharger le fichier. Le affleurer() La fonction est utilisée pour effacer le tampon de sortie. Le readFile () La fonction est utilisée avec le nom de fichier uniquement, ici.

télécharger.php

if (isset ($ _ get ['path']))

// Lire le nom de fichier
$ filename = $ _get ['path'];
// Vérifiez que le fichier existe ou non
if (file_exists ($ filename))
// Définir les informations d'en-tête
En-tête («Content-Description: File Transfer»);
En-tête («Content-Type: Application / Octet-Stream»);
En-tête ("Cache-Control: No-Cache, Must-Revalidate");
En-tête ("Expire: 0");
en-tête ('contenu-disposition: pièce jointe; filename = "'.Nom de base ($ nom de fichier).'"');
En-tête ('Content-Length:' . FileSize ($ filename));
En-tête («pragma: public»);
// Effacer le tampon de sortie du système
affleurer();
// Lire la taille du fichier
ReadFile ($ nom de fichier);
// se terminer du script
mourir();

autre
Echo "Le fichier n'existe pas."


autre
Echo "Le nom de fichier n'est pas défini."
?>

Sortir
La sortie suivante apparaîtra après avoir cliqué sur le lien de téléchargement du fichier image. La taille du fichier du rose.jpg L'image est 27.2 kb, Comme indiqué dans la boîte de dialogue. Vous pouvez télécharger le fichier en sélectionnant le Enregistrer le fichier bouton radio et appuyer sur le D'ACCORD bouton.

Exemple 2: Télécharger le fichier avec le chemin du fichier

Si le fichier existe à l'emplacement du fichier donné, le chemin du fichier devra mentionner dans l'URL. Dans cet exemple, nous créerons un fichier HTML avec le code suivant, qui passera le nom de fichier avec le chemin du fichier:

téléchargement3.html



Telecharger des fichiers


Télécharger le fichier PDF


Télécharger le fichier JPG



Nous créerons un fichier PHP avec le code suivant pour télécharger un fichier à partir du chemin du fichier. Le code PHP dans l'exemple précédent sera légèrement modifié pour télécharger le fichier à partir du chemin donné. Le ClearStateCache () La fonction est utilisée pour effacer le cache qui avait été stocké précédemment. Deux arguments sont utilisés dans le readFile () fonction.

téléchargement2.php

if (isset ($ _ get ['path']))

// Lire l'URL
$ url = $ _get ['path'];
// effacer le cache
clearStatCache ();
// Vérifiez que le chemin du fichier existe ou non
if (file_exists ($ url))
// Définir les informations d'en-tête
En-tête («Content-Description: File Transfer»);
En-tête («Content-Type: Application / Octet-Stream»);
en-tête ('contenu-disposition: pièce jointe; filename = "'.Nom de base ($ URL).'"');
En-tête ('Content-Length:' . FileSize ($ url));
En-tête («pragma: public»);
// Effacer le tampon de sortie du système
affleurer();
// Lire la taille du fichier
ReadFile ($ url, true);
// se terminer du script
mourir();

autre
Echo "Le chemin de fichier n'existe pas."


Echo "Le chemin du fichier n'est pas défini."
?>

Sortir
Une fois le lien de téléchargement du fichier PDF cliqué, la sortie suivante apparaîtra.

Didacticiel vidéo

Conclusion

Cet article a fourni un moyen simple de télécharger de force n'importe quel fichier à l'aide du script PHP, pour aider les lecteurs à ajouter la fonction de téléchargement dans leur script.