¿Hay alguna manera de forzar al administrador de descargas del usuario a iniciar una descarga para .PDF en lugar de mostrar el .PDF en una nueva ventana/pestaña?¿Cómo forzar una descarga de PDF automáticamente?
Respuesta
Debe enviar encabezados HTTP (Content-disposition
) para poder hacerlo. No puedes hacer esto en el lado del cliente.
Conjunto Content-Disposition en su cabecera HttpResponse:
Content-Disposition = 'attachment; filename=filename.pdf'
El '; 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;
Esto tiene que ser hecho en el lado del servidor. No puedes hacer esto en el lado del cliente.
Cómo hacerlo depende del idioma del lado del servidor en cuestión.
PHP:
header('Content-Disposition: attachment; filename="' . $filename . '"');
Java:
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
.NET:
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
Si no hay ningún medio de cualquier código del lado del servidor, que transmite el archivo PDF, entonces usted necesita para configurarlo en el nivel del servidor web. En por ejemplo Apache HTTPD, puede colocar/expandir un archivo .htaccess
en la raíz de la carpeta PDF con la siguiente entrada:
<Files *.pdf>
Header set Content-Disposition attachment
</Files>
o configurarlo a nivel mundial en httpd.conf
archivo. Existe un enfoque similar para IIS con el archivo web.config
.
solución .htaccess:
AddType application/octet-stream .pdf
Sí se puede hacer en la página JSP ... Dando un enlace de descarga en una página JSP en el cual va a nueva página de guión ... y descarga el archivo PDF de la siguiente código
DownloadPage.JSP: -
<a href='downloadPdf.jsp?file=FILE.pdf' >Download PDF File</a>
código downloadPdf.JSP: -
<%@ 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();
%>
Fuente: http://bloggerplugnplay.blogspot.in/2012/05/how-to-create-force-download-link-for.html
¡Genial! ¡Gracias! Tenga en cuenta que el nombre del archivo puede necesitar doble barra invertida \\. Tampoco me parece que el "nombre" String se use en este código – gordon613
Para IIS:
Poner todos los archivos que desea forzar a descargar en su propia carpeta.
Luego, en IIS vaya a esa carpeta y haga doble clic en Encabezados de respuesta HTTP.
Agregar una nueva cabecera con la siguiente información:
Nombre: content-disposition
Valor: apego
Todos los archivos de esa carpeta, cuando se accede, debe impulsar el diálogo Guardar como caja para el navegador apropiado.
Funciona muy bien y no tiene que crear una página específicamente para forzar la descarga de archivos. – Edyn
<?php
header('Content-disposition: attachment; filename=filename.pdf');
header('Content-type: application/pdf');
readfile('path/to/filename.pdf');
utilice el descarga atributo dentro de su <a>
etiqueta
<a href="content/file.pdf" download > pdf link </a>
<a href="content/file.doc" download > doc link </a>
esto solo funciona en Chrome. –
Usado y probado en Chrome, Firefox e IE8. ¡Todo funciona! Simple y fácil. Nota: si usa 'download =" filename "' ¡puede incluso cambiar el nombre de la descarga! – Marja
Maldición ... ¡Debo corregirme! No funciona en IE. Lo probé en una máquina virtual, en la que aún no se había instalado ningún lector de PDF. En ese caso, el archivo siempre se descarga. – Marja
De código vb net asp encontrado en el Internet que hice esta página sencilla C# download.aspx. Puede usarlo con la url del archivo pasada como parámetro de querystring "f". (/folder/download.aspx?f=/folder1/example.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. Usando php forzar descarga un pdf
- 2. Forzar la descarga de servidores s3 amazon
- 3. php - ¿Cómo forzar la descarga de un archivo?
- 4. Cómo forzar la descarga de un archivo en PHP
- 5. PHP: mostrar el contenido después de forzar la descarga?
- 6. ¿Cómo puedo forzar la descarga de un módulo Perl?
- 7. ¿Cómo puedo forzar la descarga de un archivo usando php?
- 8. jQuery Ajax llamado a archivo PDF descarga
- 9. Convertir PDF a imágenes automáticamente
- 10. Cómo usar Content-disposition para forzar la descarga de un archivo en el disco duro?
- 11. Incruste PDF en una página web y evite la descarga
- 12. Cómo forzar la nueva descarga del archivo Silverlight XAP
- 13. ¿Cómo convierto una página de ColdFusion en una descarga de PDF?
- 14. Forzar Eclipse para importar automáticamente una clase con múltiples opciones
- 15. ¿Cómo actualizar automáticamente en un visor de PDF?
- 16. ¿Puede Sweave producir muchos archivos PDF automáticamente?
- 17. Generar un .txt y luego forzar la descarga
- 18. ¿Cómo forzar a SciTE a recargar un archivo automáticamente?
- 19. jQuery comprobar cuando se completa la descarga de PDF
- 20. ¿Cómo se puede forzar una descarga en un objeto OutputStream sin cerrarlo?
- 21. Cómo configurar Visual Studio para publicar archivos pdf automáticamente
- 22. Forzar la descarga desde un servidor externo y renombrar
- 23. ¿Cómo puedo completar automáticamente un formulario PDF en Django/Python?
- 24. cómo reanudar una descarga interrumpida
- 25. Forzar enlace de descarga en una hoja de cálculo de Google Docs
- 26. Cómo forzar la actualización de una vista sin que se active automáticamente desde un elemento observable?
- 27. Problemas con la descarga del archivo pdf usando R
- 28. cerrar automáticamente Firefox cuando se complete la descarga
- 29. Descargue PDF de descarga creado por TCPDF, después de la publicación de Ajax
- 30. ¿Cómo ordenar automáticamente una columna QTreeWidget?
relacionada: http://stackoverflow.com/questions/1465573/forcing-to-download-a-file-using-php –