Question

Je suis à l'aide de RazorPDF et je tiens à force de le télécharger au format PDF plutôt que d'ouvrir dans l'onglet du navigateur.Comment dois-je faire?Merci

public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult Index(string Id)
{
    return RedirectToAction("Pdf");
}

public PdfResult Pdf()
{
    // With no Model and default view name.  Pdf is always the default view name
    return new PdfResult();
}
Était-ce utile?

La solution

Essayez d'ajouter le content-disposition l'en-tête avant de retourner l' PDFResult objet.

public PdfResult Pdf()
{
  Response.AddHeader("content-disposition", "attachment; filename=YourSanitazedFileName.pdf");

  // With no Model and default view name.  Pdf is always the default view name
  return new PdfResult();
}

Autres conseils

Vous devriez examiner l'en-tête de "disposition de contenu";Par exemple, réglage "Contenu-Disposition" à "Pièce jointe; FileName= nom_fichier.pdf" Demimera l'utilisateur (généralement) avec une boîte de dialogue "Enregistrer sous: FileName.pdf", plutôt que de l'ouvrir.Ceci, cependant, doit provenir de la demande qui fait le téléchargement, vous ne pouvez donc pas faire cela lors d'une redirection.Toutefois, ASP.NET offre une réponse.Transmitfile à cet effet.Par exemple (en supposant que vous n'utilisez pas MVC, qui a d'autres options préférées):

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=FileName.pdf");
Response.TransmitFile(filePath);
Response.End(); 

Si vous essayez d'ouvrir ensuite le fichier dans API Convertir le flux en bytesarray, puis remplissez le contenu

            HttpResponseMessage result = null;
            result = Request.CreateResponse(HttpStatusCode.OK);
            FileStream stream = File.OpenRead(path);
            byte[] fileBytes = new byte[stream.Length];
            stream.Read(fileBytes, 0, fileBytes.Length);
            stream.Close();           
            result.Content = new ByteArrayContent(fileBytes);
            result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            result.Content.Headers.ContentDisposition.FileName = "FileName.pdf";            

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