2010-10-08 11 views
0

Ceci est le code que j'utilise. Comme suggéré, j'ai ajouté les en-têtes pour le type de contenu et la disposition.Impossible de télécharger les fichiers - PHP

<?php 
header('Content-Disposition: attachment'); 
header('Content-Type: application/octet-stream'); 

$con = mysql_connect("localhost","root","admin"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("acl_cake", $con); 

$result = mysql_query("select * from attachments"); 

while($row = mysql_fetch_array($result)) 
{ 
echo '<a href="'.$row[2].'" target="_blank">Download</a>--'.$row[3].'<br>'; 
} 

mysql_close($con); 
?> 

Avant d'ajouter des en-têtes, j'aurais quelques liens disponibles sur la page Web. Chaque fois que je clique sur l'un d'entre eux, une nouvelle page est ouverte et le contenu de ce fichier est affiché dans la nouvelle page.

Maintenant, après avoir ajouté les en-têtes, chaque fois que je charge une page, je reçois un popup qui me demande de télécharger mon formulaire plutôt que le fichier.

Si j'ai le content-disposition:attachment; filename='file.txt', alors au chargement de la page il y a un pop-up pour télécharger le fichier "file.txt", et aucun des liens ne sont affichés sur la page Web.

Je ne sais pas si j'ai fait une erreur avec quelque chose.

Je ne suis pas sûr si j'ai fait une erreur avec les en-têtes.

+0

Pourquoi cela a-t-il été tellement rejeté? –

+1

Probablement parce que l'explication n'est pas claire. J'imagine. –

+0

et il utilise 'spits' plutôt que' display': o – bangbambang

Répondre

3

vous devez envoyer l'en-tête content-disposition pour forcer un téléchargement

header("Content-Disposition: attachment; filename=\"my.file\""); 

mis également saisir le contenu explicitement:

header('Content-Type: application/octet-stream'); 
+0

Sans vouloir vous offenser, à quoi bon éviter les guillemets lorsque vous pouvez utiliser des guillemets simples? – fabrik

+0

Hm, je viens de copier ce code à partir d'une recherche google parce que je ne me souviens pas exactement, donc il n'y a pas vraiment de point :) –

+0

les en-têtes doivent être placés au début du fichier n'est-ce pas? comment aurais-je le nom de fichier alors ?? Est-ce optionnel ou essentiel? – macha

0

Si je vous comprends bien, vous ne voulez pas donner à vos utilisateurs un lien pour télécharger un fichier texte. Si c'est le cas, vous pouvez le faire en définissant un en-tête application/octet-stream pour ce fichier (par exemple en utilisant php).

note: dans la plupart des cas, je pense que vous ne devriez pas faire cela. C'est le choix des utilisateurs de traiter les fichiers qui peuvent être ouverts par le navigateur, et si l'utilisateur ne veut pas télécharger de tels fichiers, il peut facilement configurer son navigateur pour ceci ou cela.

+0

! J'ai ajouté cet en-tête "header ('Content-Type: application/octet-stream');" au sommet. Mais chaque fois que je charge la page, j'obtiens une fenêtre qui me permet de télécharger la page. Je ne suis pas sûr de ce que je fais une erreur avec. – macha

Questions connexes