Qu'est-ce que je fais mal avec le contenu HttpResponse et en-têtes lors du téléchargement d'un fichier?

StackOverflow https://stackoverflow.com/questions/2465485

  •  20-09-2019
  •  | 
  •  

Question

Je veux télécharger un fichier PDF à partir d'une base de données SQL Server qui est stocké dans une colonne binaire. Il y a un LinkButton sur une page ASPX. Le gestionnaire d'événements de ce bouton ressemble à ceci:

protected void LinkButtonDownload(object sender, EventArgs e)
{
    ...
    byte[] aByteArray;
    // Read binary data from database into this ByteArray
    // aByteArray has the size: 55406 byte

    Response.ClearHeaders();
    Response.ClearContent();
    Response.BufferOutput = true;

    Response.AddHeader("Content-Disposition", "attachment; filename=" + "12345.pdf");
    Response.ContentType = "application/pdf";

    using (BinaryWriter aWriter = new BinaryWriter(Response.OutputStream))
    {
        aWriter.Write(aByteArray, 0, aByteArray.Length);
    }
}

est offert dans mon navigateur Une « boîte de dialogue Ouvrir / Enregistrer ». Lorsque je stocke ce fichier « 12345.pdf » sur le disque, le fichier a une taille de 71523 octets. Le 16ko supplémentaire à la fin du fichier PDF sont le code HTML de ma page (comme je peux voir quand j'afficher le fichier dans un éditeur). Je suis confus parce que je croire que ClearContent et clearHeaders assureraient que le contenu de la page n'est pas envoyé en même temps que le contenu du fichier.

Qu'est-ce que je fais mal ici?

Merci pour l'aide!

Était-ce utile?

La solution

Je pense que vous voulez un Response.End à la fin de cette méthode.

Autres conseils

En un coup d'oeil rapide, vous manque Response.End ();

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