Question

Je donne à un utilisateur un lien pour télécharger un fichier csv ... en utilisant simplement

Click <a href="report.csv">here</a> to download your file.

Ce texte et ce lien sont affichés dans une petite fenêtre contextuelle - hauteur 100 largeur 400.

Si l'utilisateur clique sur " enregistrer " - alors pas de problème, le fichier est enregistré à l'endroit de leur choix

Si vous choisissez "Ouvrir" le fichier csv est ensuite affiché dans la petite fenêtre contextuelle. Ce qui n’est pas ce que je veux - je préférerais que Excel ouvre et affiche le fichier dans Excel, ou même que je désactive l’option "ouvert". bouton peut être une option possible.

Avez-vous des idées sur la manière de réaliser ces objectifs?

Merci,

Était-ce utile?

La solution

Je suppose que vous ouvrez cette boîte de dialogue en utilisant du javascript. Je vous conseillerais donc de ne pas afficher / ouvrir votre minuscule " téléchargement " fenêtre contextuelle et à la place, affiche ce lien sur une page Web. Ainsi, lorsque quelqu'un clique sur le lien, il force le navigateur à télécharger le fichier. S'il le souhaite, il peut obtenir une vue aussi large que la taille de la fenêtre de browswer.

// juste pour exemple, pour forcer le téléchargement d'un fichier zip, envoyez les en-têtes comme

// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");

Autres conseils

Vous n’avez aucun pouvoir sur les paramètres des utilisateurs, tels que le type de fichier ouvert par quelle application. Ils devraient accéder à leurs paramètres et modifier l'association de fichier. Cependant, gardez à l’esprit que tout le monde n’a pas installé Excel, ce n’est donc pas une bonne idée de forcer l’utilisateur à ouvrir le fichier csv dans cette application particulière.

Je ne pense pas non plus que vous puissiez désactiver l'option Ouvrir. Cela est également dicté par la configuration du navigateur Web, qu'il affiche ou non la fenêtre, ou qu'il lance directement l'application associée, etc. Pas de chance dans votre cas particulier.

Je pense que cela correspond au niveau du système d'exploitation et ne peut pas être modifié.

Une demi-solution ajoute target = "_blank" à la balise. Ainsi, lorsque les utilisateurs sélectionnent l'option "Ouvrir", le fichier sera au moins ouvert dans une nouvelle fenêtre (plein écran ou au moins redimensionnable).

En dehors de cela, vous ne pouvez pas modifier le comportement de la fenêtre, comme l'a déclaré ceejayoz.

  • Assurez-vous de ne faire aucune autre sortie avant ce point
  • Construisez votre chaîne csv et stockez-la dans $ csvString
  • Donnez-lui le nom de fichier approprié dans $ csv_filename
  • Les en-têtes doivent indiquer au navigateur de le charger dans Excel

    en-tête ("Cache-Control: maxage = 1");

    en-tête ("Pragma: public");

    en-tête (" type de contenu: application / vnd.ms-excel ");

    en-tête (" expire: 0 ");

    en-tête ("Cache-Control: doit revalider, post-check = 0, pre-check = 0");

    en-tête ("contenu-disposition: pièce jointe; nom du fichier = $ nom_fichier csv");

    echo $ csvString;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top