Gibt es eine Möglichkeit, den Download-Manager des Benutzers zu zwingen, einen Download für .PDF zu starten, anstatt die .PDF in einem neuen Fenster/Tab anzuzeigen?Wie erzwinge ich automatisch einen PDF-Download?
Antwort
Sie müssen HTTP-Header (Content-disposition
) senden, um dies zu tun. Sie können dies nicht auf der Client-Seite tun.
Set Content-Disposition in der Httpresponse-Header:
Content-Disposition = 'attachment; filename=filename.pdf'
Die '; filename =
<?php
// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
}
$reader = fopen($filename, "r");
$contents = fread($reader, filesize($filename));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_end_clean();
echo $contents;
Dies muss in der Server-Seite durchgeführt werden. Sie können dies nicht auf der Client-Seite tun.
Wie es geht, hängt von der serverseitigen Sprache ab.
PHP:
header('Content-Disposition: attachment; filename="' . $filename . '"');
Java:
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
.NET:
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
Wenn es kein Mittel, einen beliebigen Server-Side-Code ist, die die PDF-Datei-Streams, dann müssen Sie um es auf Webserver-Ebene zu konfigurieren. In zum Beispiel Apache, können Sie platzieren/erweitern, um eine .htaccess
Datei in den Root-PDF-Ordnern mit dem folgenden Eintrag:
<Files *.pdf>
Header set Content-Disposition attachment
</Files>
oder konfigurieren Sie es global in httpd.conf
Datei. Ein ähnlicher Ansatz existiert für IIS mit web.config
Datei.
.htaccess Lösung:
AddType application/octet-stream .pdf
Ja, es kann ... in JSP-Seite getan wird durch einen Download-Link in einer JSP-Seite geben, auf das geht neue Skript Seite ... und die PDF-Datei herunterladen wie folgt
DownloadPage.JSP Code: -
<a href='downloadPdf.jsp?file=FILE.pdf' >Download PDF File</a>
downloadPdf.JSP Code: -
<%@ page import="java.util.*,java.io.*"%>
<%
File f = new File ("E:/PDFfiles/Downloads/" + request.getParameter("file"));
response.setContentType ("application/pdf");
response.setHeader ("Content-Disposition", "attachment; filename=""+request.getParameter("file")+""");
String name = f.getName().substring(f.getName().lastIndexOf("/") + 1,f.getName().length());
InputStream in = new FileInputStream(f);
ServletOutputStream outs = response.getOutputStream();
int bit = 256;
int i = 0;
try {
while ((bit) >= 0) {
bit = in.read();
outs.write(bit);
}
}
catch (IOException ioe) {
ioe.printStackTrace(System.out);
}
outs.flush();
outs.close();
in.close();
%>
Quelle: http://bloggerplugnplay.blogspot.in/2012/05/how-to-create-force-download-link-for.html
Großartig! Vielen Dank! Beachten Sie, dass der Dateiname möglicherweise doppelten Backslash \\ benötigt. Es scheint mir auch nicht, dass der String 'name' in diesem Code verwendet wird – gordon613
Für IIS:
alle Dateien Legen Sie erzwingen wollen in einem eigenen Ordner zum Download bereit.
Dann in IIS gehen Sie diesen Ordner und doppelklicken Sie auf HTTP Response Headers.
einen neuen Header mit den folgenden Informationen hinzufügen:
Name: Content-Disposition
Wert: Befestigung
Alle Dateien in diesem Ordner, wenn darauf zugegriffen wird, soll als Dialog aufgefordert, das Speichern Box für den entsprechenden Browser.
Funktioniert wirklich gut und muss keine Seite speziell zum Erzwingen von Dateien zum Download erstellen. – Edyn
<?php
header('Content-disposition: attachment; filename=filename.pdf');
header('Content-type: application/pdf');
readfile('path/to/filename.pdf');
verwenden, um das herunterladen Attribut in Ihrem <a>
Tag
<a href="content/file.pdf" download > pdf link </a>
<a href="content/file.doc" download > doc link </a>
das funktioniert eigentlich nur in Chrome. –
Verwendet und getestet in Chrome, Firefox und IE8. Es funktioniert alles! Simpel und einfach. Hinweis: Wenn Sie 'download =" Dateiname "' verwenden, können Sie sogar den Namen des Downloads ändern! – Marja
Darn ... Ich muss mich korrigieren! Es funktioniert nicht auf IE. Ich habe es auf einer virtuellen Maschine getestet, in der noch kein PDF-Reader installiert war. In diesem Fall wird die Datei immer heruntergeladen. – Marja
von VB asp net Code im Internet finde ich diese einfache C# download.aspx Seite gemacht. Sie können mit der Datei URL als "f" querystring Parameter übergeben. (/folder/download.aspx?f=/folder1/beispiel.pdf).
<!DOCTYPE html>
<html>
<head><title></title>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
String strRequest = "";
try
{
strRequest = Request.QueryString["f"].ToString();
}
catch
{ }
if (strRequest.Length > 0)
{
String path = Server.MapPath(strRequest);
System.IO.FileInfo File = new System.IO.FileInfo(path);
if (File.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + File.Name);
Response.AddHeader("Content-Length", File.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(File.FullName);
Response.End();
};
}
}
</script>
</head>
<body></body>
</html>
- 1. Wie erzwinge ich einen Versionskonflikt in iCloud
- 2. Wie erzwinge ich einen Wert für einen String in Pony?
- 3. Wie erstelle ich automatisch einen fehlenden Ordner?
- 4. Wie erhalte ich einen automatisch generierten Wert?
- 5. Wie erzwinge ich einen HTML-Link als absolut?
- 6. Wie erzwinge ich einen Zeilenumbruch bei einer JavaScript verketteten Zeichenfolge?
- 7. Wie erzwinge ich einen Knoten in winzigen MCE?
- 8. Wie erzwinge ich einen gemeinsamen Vorfahren in einem Git-Merge?
- 9. Wie erzwinge ich einen Mutex auf einem Delegaten
- 10. Wie erzwinge ich einen globalen Spaltentyp mit Excel_Sheet?
- 11. Wie erzwinge ich einen DataSource-Speicherort in Crystal Reports?
- 12. Wie erzwinge ich, dass Postgres einen bestimmten Index verwendet?
- 13. Wie erzwinge ich einen Docker Push auf Mac OSX
- 14. Wie erzwinge ich eine Klasse?
- 15. Wie erzwinge SciTE, eine Datei automatisch neu zu laden?
- 16. Wie erzwinge einen Hover-Status mit jQuery?
- 17. FlowDocument Erzwinge einen PageBreak (BreakPageBefore)
- 18. Erzwinge einen Zeilenumbruch in einer URL
- 19. Wie erzwinge ich genau eine Definition?
- 20. Wie erzwinge ich jQuery Append, um ein Tag nicht automatisch zu schließen?
- 21. Wie erzwinge Passwortänderung mit FOSUserBundle?
- 22. Wie erzwinge ich jqxWindow als obersten
- 23. Wie erzwinge ich den Garbage Collector?
- 24. Wie erzwinge ich eine Emacs-Tramp-Zeit?
- 25. Wie erzwinge ich Ausnahmemeldung mit ExpectedException Attribut
- 26. Wie erzwinge ich eine Verbindung zu einem a2dp Bluetooth-Gerät durch eine Aktivität oder einen Dienst
- 27. Wie erzwinge ich meine ASP.net 2.0 App zu rekompilieren
- 28. Wie erzwinge ich, dass Intellij IDEA nur einen Gradle-Daemon verwendet?
- 29. Wie kann ich Ruby einen Befehl mehrmals automatisch wiederholen lassen?
- 30. AutoHotKey - Wie sende ich einen einzelnen Tastendruck automatisch?
verwandten: http://stackoverflow.com/questions/1465573/forcing-to-download-a-file-using-php –