C'est le code pour télécharger le fichier.
System.IO.FileStream fs = new System.IO.FileStream(Path+"\\"+fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] ar = new byte[(int)fs.Length];
fs.Read(ar, 0, (int)fs.Length);
fs.Close();
Response.AddHeader("content-disposition", "attachment;filename=" + AccNo+".pdf");
Response.ContentType = "application/octectstream";
Response.BinaryWrite(ar);
Response.End();
Lorsque ce code est exécuté, il demandera à l'utilisateur d'ouvrir ou de sauvegarder le fichier. Au lieu de cela, je dois ouvrir un nouvel onglet ou une nouvelle fenêtre et afficher le fichier. Comment puis-je atteindre cet objectif?
REMARQUE:
Le fichier ne sera pas nécessairement situé dans le dossier du site Web. Il se peut qu'il soit situé dans un autre dossier.
Au lieu de charger un flux dans un tableau d'octets et de l'écrire dans le flux de réponse, vous devriez jeter un oeil à HttpResponse.TransmitFile
Response.ContentType = "Application/pdf";
Response.TransmitFile(pathtofile);
Si vous voulez que le PDF s'ouvre dans une nouvelle fenêtre, vous devez ouvrir la page de téléchargement dans une nouvelle fenêtre, par exemple comme ceci:
<a href="viewpdf.aspx" target="_blank">View PDF</a>
Response.ContentType = contentType;
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=" + fileName);
Response.BinaryWrite(fileContent);
Et
<asp:LinkButton OnClientClick="openInNewTab();" OnClick="CodeBehindMethod".../>
En javaScript:
<script type="text/javascript">
function openInNewTab() {
window.document.forms[0].target = '_blank';
setTimeout(function () { window.document.forms[0].target = ''; }, 0);
}
</script>
Prenez soin de reset target , sinon tous les autres appels comme Response.Redirect
s'ouvriront dans un nouvel onglet, ce qui pourrait ne pas être ce que vous voulez.
cela peut aider
Response.Write("<script>");
Response.Write("window.open('../Inventory/pages/printableads.pdf', '_newtab');");
Response.Write("</script>");
Vous devez créer une autre page ou un gestionnaire générique avec le code pour générer votre pdf. Ensuite, cet événement est déclenché et la personne est redirigée vers cette page.
vous pouvez retourner un FileResult à partir de votre action MVC.
********************** Action du MVC *************
public FileResult OpenPDF(parameters)
{
//code to fetch your pdf byte array
return File(pdfBytes, "application/pdf");
}
************** js ***************
Utilisez formpost pour publier vos données en action
var inputTag = '<input name="paramName" type="text" value="' + payloadString + '">';
var form = document.createElement("form");
jQuery(form).attr("id", "pdf-form").attr("name", "pdf-form").attr("class", "pdf-form").attr("target", "_blank");
jQuery(form).attr("action", "/Controller/OpenPDF").attr("method", "post").attr("enctype", "multipart/form-data");
jQuery(form).append(inputTag);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
return false;
Vous devez créer un formulaire pour publier vos données, y ajouter votre nom de domaine, publier vos données et supprimer le formulaire du corps de votre document.
Toutefois, la publication de formulaire ne publierait pas les données dans un nouvel onglet uniquement sur Navigateur Edge . Mais un get request fonctionne car il s’agit d’ouvrir un nouvel onglet avec une URL contenant une chaîne de requête pour vos paramètres d’action.
Ici, j'utilise iTextSharp dll pour générer le fichier PDF . Je veux ouvrir le fichier PDF au lieu de le télécharger . J'utilise donc le code ci-dessous qui fonctionne très bien pour moi .Now le fichier pdf s'ouvre dans le navigateur, maintenant le téléchargement
Document pdfDoc = new Document(PageSize.A4, 25, 10, 25, 10);
PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
Paragraph Text = new Paragraph("Hi , This is Test Content");
pdfDoc.Add(Text);
pdfWriter.CloseStream = false;
pdfDoc.Close();
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.End();
Si vous souhaitez télécharger le fichier, ajoutez la ligne ci-dessous après. Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Example.pdf");