readfile ne fonctionne pas correctement
Je suis en train de télécharger un fichier via mon serveur à moi, par streaming les télécharger.
C'est mon script:
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=http://user:[email protected]/file.bin';
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $r[2]);
ob_clean();
flush();
readfile($fileName);
exit;
example.com n'est-ce pas ce que je suis vraiment à l'aide, je ne voulais pas montrer la vraie URL. 🙂 Quand je vais à ce fichier dans mon navigateur web, une fenêtre de téléchargement ne s'affiche pas et rien ne se passe. $r[2]
est le contenu de la longueur, en octets, du fichier et $fileName
est le même URL que celui utilisé dans l'en-tête de pièce jointe. Je ne sais vraiment pas ce que je fais mal.
Je ne comprends pas le raisonnement derrière votre portion d'une URL absolue avec le nom d'utilisateur et le mot de passe (?!?!?!) le téléchargement de nom de fichier. Soins à élaborer?
les balises n'appartiennent pas à l'objet
les balises n'appartiennent pas à l'objet
OriginalL'auteur Joseph | 2009-12-07
Vous devez vous connecter pour publier un commentaire.
readfile(); besoins le chemin d'accès absolu du fichier sur la machine plutôt que d'une url.
par exemple /home/person/file.exe
À partir de la fonction php de la page "UNE URL peut être utilisé comme un nom de fichier avec cette fonction si le fopen wrappers ont été activés. Voir fopen() pour plus de détails sur la façon de spécifier le nom de fichier. Voir la Liste des Protocoles Supportés pour les liens vers des informations sur les capacités différentes des wrappers ont, des notes sur leur utilisation, et les données sur les variables prédéfinies ils peuvent fournir."
OriginalL'auteur Tom
Il y a un manque
)
à la fin du nom de fichier d'en-tête de ligne, mais je pars du principe que qui s'est passé lors de l'édition de la ligne.Pour ce que ça vaut, l'exécution de votre code d'échantillon donne une invite de téléchargement, n'ont pas vraiment testé bien passé, mais c'est peut-être quelque chose avec le client/serveur de configuration - pas le code.
OriginalL'auteur Tim Lytle
À mon humble avis le problème est la taille du fichier, essayez d'obtenir la taille du fichier via http (regardez cette fonction):
http://codesnippets.joyent.com/posts/show/1214
Donc l'éditer à partir de
à
Espère que vous résoudre votre problème.
OriginalL'auteur eldblz
J'ai trouvé un moyen de télécharger une image par exemple, mais cela pourrait aider avec tout type de fichier. Il télécharge un fichier sans l'aide de
readfile
.Je sais qu'il peut être maladroit, mais parfois nous avons besoin de quelques solutions de contournement pour faire le travail.
Essayer cela, où
$src = 'http://external-server/remote-image.jpg'
c'est testé et de travail 😉
OriginalL'auteur Junior M