Je veux exiger qu'un fichier soit téléchargé lorsque l'utilisateur visite une page Web avec PHP. Je pense que cela a quelque chose à voir avec file_get_contents
, mais je ne sais pas comment l'exécuter.
$url = "http://example.com/go.exe";
Après avoir téléchargé un fichier avec, header(location)
il ne redirige pas vers une autre page. Ça s'arrête juste.
Réponses:
Lisez la documentation sur la fonction PHP intégrée readfile
Assurez-vous également d'ajouter le type de contenu approprié en fonction de votre fichier application / zip, application / pdf, etc. - mais uniquement si vous ne souhaitez pas déclencher la boîte de dialogue Enregistrer sous.
la source
Ou, lorsque le fichier ne peut pas être ouvert avec le navigateur, vous pouvez simplement utiliser l'en-
Location
tête:la source
$file
(qui contient la partie http) mais un nom de fichier valide.est correct
ou meilleur pour le type de fichiers exe
la source
Affichez d'abord votre fichier et définissez sa valeur dans url.
index.php
download.php
la source
Si vous devez télécharger un fichier d'une taille supérieure à la limite de mémoire autorisée (
memory_limit
paramètre ini), ce qui provoquerait l'PHP Fatal error: Allowed memory size of 5242880 bytes exhausted
erreur, vous pouvez le faire:la source
ob_flush()
il peut y avoir l'erreur: ob_flush (): impossible de vider le tampon. Aucun tampon à vider . enveloppez-le avecif (ob_get_level() > 0) {ob_flush();}
(Référence stackoverflow.com/a/9182133/128761 )Une modification de la réponse acceptée ci-dessus, qui détecte également le type MIME à l'exécution:
la source
Le code suivant est un moyen correct d'implémenter un service de téléchargement en php comme expliqué dans le tutoriel suivant
la source
file_name
etfilePath
. Pas très bonne pratique de codage. Surtout sans explication. Lien vers un didacticiel externe inutile.essaye ça:
la source
http://php.net/manual/en/function.readfile.php
C'est tout ce dont vous avez besoin. "Monkey.gif" changez le nom de votre fichier. Si vous devez télécharger à partir d'un autre serveur, "monkey.gif" remplacez-le par " http://www.exsample.com/go.exe "
la source
Vous pouvez également diffuser des téléchargements qui consommeront beaucoup moins de ressources. exemple:
Dans l'exemple ci-dessus, je télécharge un test.zip (qui était en fait le zip du studio Android sur ma machine locale). php: // output est un flux en écriture seule (généralement utilisé par echo ou print). après cela, il vous suffit de définir les en-têtes requis et d'appeler stream_copy_to_stream (source, destination). La méthode stream_copy_to_stream () agit comme un tube qui prend l'entrée du flux source (flux de lecture) et la dirige vers le flux de destination (flux d'écriture) et évite également le problème de la mémoire autorisée épuisée afin que vous puissiez réellement télécharger des fichiers plus gros que votre PHP
memory_limit
.la source
Les réponses ci-dessus fonctionnent. Mais, j'aimerais contribuer à une méthode sur la façon de l'exécuter en utilisant GET
sur votre page html / php
et
download.php
contientcela devrait fonctionner sur tous les types de fichiers. cela n'est pas testé avec POST, mais cela pourrait fonctionner.
la source