Tengo algunos catálogos PDF de gran tamaño en mi sitio web, y necesito vincularlos como descarga. Cuando busqué en Google, encontré tal cosa anotada a continuación. Debería abrir la ventana emergente " Guardar como ... " al hacer clic en el enlace ...
<head>
<meta name="content-disposition" content="inline; filename=filename.pdf">
...
Pero no funciona: / Cuando enlace a un archivo como se muestra a continuación, solo se vincula al archivo y está tratando de abrir el archivo.
<a href="filename.pdf" title="Filie Name">File name</a>
ACTUALIZACIÓN (según las respuestas a continuación):
Como veo, no hay una solución de navegador cruzado 100% confiable para esto. Probablemente la mejor manera es usar uno de los servicios web que se enumeran a continuación, y dar un enlace de descarga ...
Respuestas:
De una respuesta a Forzar un navegador para guardar el archivo como después de hacer clic en el enlace :
fuente
download
atributo está limitado a Chrome, Firefox y Opera. Incluso las versiones recientes de IE y Safari no lo admiten. Para soporte futuro: consulte caniuse.com/#feat=download !A mí me funciona en Firefox y Chrome.
fuente
target="_blank"
puede hacer que sea un poco más utilizable para navegadores no compatibles (los PDF se abren en una nueva ventana / pestaña, en lugar de sobrescribir la página actual).target="_blank"
fue necesario ya quedownload
solo no se pudo activar la descarga correctamente (Chrome)download
atributo, se utilizará como nombre de archivo. Lo estoy usando en los guiones de usuario todo el tiempo.Las metaetiquetas no son una forma confiable de lograr este resultado. En general, ni siquiera debe hacer esto: debe dejarse en manos del usuario / agente de usuario decidir qué hacer con el contenido que proporciona. El usuario siempre puede forzar a su navegador a descargar el archivo si lo desea.
Si aún desea forzar al navegador a descargar el archivo, modifique los encabezados HTTP directamente. Aquí hay un ejemplo de código PHP:
Tenga en cuenta que esto es solo una extensión del protocolo HTTP; algunos navegadores pueden ignorarlo de todos modos.
fuente
ob_end_flush()
tampoco ayudó.Tuve este mismo problema y encontré una solución que ha funcionado muy bien hasta ahora. Pones el siguiente código en tu
.htaccess
archivo:Vino de Forzar un archivo para descargar en lugar de aparecer en el navegador .
fuente
<FilesMatch "\.(pdf|xlsx?|docx?)$">
Encontré una solución muy simple para Firefox (solo funciona con un href relativo en lugar de un href directo): agregar
type="application/octet-stream"
:fuente
Intente agregar esta línea a su archivo .htaccess.
Espero que funcione, ya que es independiente del navegador.
fuente
Por lo general, sucede porque la configuración o los complementos de algunos navegadores abren directamente el PDF en la misma ventana como una página web simple.
Lo siguiente podría ayudarlo. Lo hice en PHP hace unos años. Pero actualmente no estoy trabajando en esa plataforma.
Guarde lo anterior como download.php .
Guarde este pequeño fragmento como un archivo PHP en algún lugar de su servidor y puede usarlo para realizar una descarga de archivos en el navegador, en lugar de mostrarlo directamente. Si desea servir archivos que no sean PDF, elimine o edite la línea 5.
Puedes usarlo así:
Agregue el siguiente enlace a su archivo HTML.
Referencia de: este blog
fuente
download.php?file=database_password_file.php
por ejemplo.Simplemente ponga el siguiente código en su
.htaccess
archivo:O también puedes hacer trucos con JavaScript
fuente
Acabo de usar esto, pero no sé si funciona en todos los navegadores.
Funciona en Firefox:
fuente
Una manera realmente simple de lograr esto, sin usar sitios de descarga externos o modificar encabezados, etc., es simplemente crear un archivo ZIP con el PDF dentro y vincularlo directamente al archivo ZIP. Esto SIEMPRE activará el cuadro de diálogo Guardar / Abrir, y aún es fácil para las personas hacer doble clic en las ventanas PDF que se inicia el programa asociado con .zip.
Por cierto, también estaba buscando una respuesta, ya que la mayoría de los complementos PDF integrados en el navegador tardan demasiado en mostrar cualquier cosa (y a menudo bloquean el navegador mientras se carga el PDF).
fuente
Una solución del lado del servidor es más compatible, hasta que el atributo "descargar" se implemente en todos los navegadores.
Un ejemplo de Python podría ser un controlador de solicitud HTTP personalizado para un almacén de archivos. Los enlaces que apuntan al almacén de archivos se generan así:
Aquí está el código:
fuente
Una manera muy fácil de hacer esto, si necesita forzar la descarga de un solo enlace en su página, es usar el atributo de descarga HTML5 en el enlace href.
Ver: http://davidwalsh.name/download-attribute
con esto puede cambiar el nombre del archivo que descargará el usuario y al mismo tiempo fuerza la descarga.
Se ha debatido si es una buena práctica o no, pero en mi caso tengo un visor incrustado para un archivo PDF y el visor no ofrece un enlace de descarga, por lo que tengo que proporcionar uno por separado. Aquí quiero asegurarme de que el usuario no abra el PDF en el navegador web, lo cual sería confuso.
Esto no necesariamente abrirá el cuadro de diálogo Guardar como, pero descargará el enlace directamente al destino de descarga preestablecido. Y, por supuesto, si está haciendo un sitio para otra persona, y necesita que escriban manualmente los atributos en sus enlaces, probablemente sea una mala idea, pero si hay una forma de obtener el atributo en los enlaces, esta puede ser una solución ligera.
fuente
Esta es una publicación anterior, pero aquí está la solución que tengo en JavaScript para usar la biblioteca jQuery.
Solo necesita usar la clase
force-download
dentro de su<a>
etiqueta y forzará la descarga automáticamente. También puede agregarlo a padrediv
y recogerá todos los enlaces dentro de él.Ejemplo:
Esto es genial para WordPress y cualquier otro sistema o sitio web personalizado.
fuente
Después del nombre del archivo en el código HTML agrego
?forcedownload=1
Esta ha sido la forma más sencilla para que active un cuadro de diálogo para guardar o descargar.
fuente
Si tiene un complemento dentro del navegador que sabe cómo abrir un archivo PDF, se abrirá directamente. Como en el caso de imágenes y contenido HTML.
Entonces, el enfoque alternativo es no enviar su tipo MIME en la respuesta. De esta manera, el navegador nunca sabrá qué complemento debe abrirlo. Por lo tanto, le dará un cuadro de diálogo Guardar / Abrir .
fuente
Simplemente tuve un problema muy similar con el problema agregado que necesitaba para crear enlaces de descarga a archivos dentro de un archivo ZIP.
Primero intenté crear un archivo temporal, luego proporcioné un enlace al archivo temporal, pero descubrí que algunos navegadores solo mostraban el contenido (un archivo CSV Excel) en lugar de ofrecer la descarga. Finalmente encontré la solución usando un servlet. Funciona tanto en Tomcat como en GlassFish, y lo probé en Internet Explorer 10 y Chrome.
El servlet toma como entrada un nombre de ruta completo para el archivo ZIP y el nombre del archivo dentro del archivo zip que debe descargarse.
Dentro de mi archivo JSP tengo una tabla que muestra todos los archivos dentro del zip, con enlaces que dicen:
onclick='download?zip=<%=zip%>&csv=<%=csv%>'
El código del servlet está en download.java:
Para compilar en Tomcat necesita que el classpath incluya tomcat \ lib \ servlet-api.jar o en GlassFish: glassfish \ lib \ j2ee.jar
Pero cualquiera de los dos funcionará en ambos. También necesita configurar su servlet
web.xml
.fuente
Agregue un encabezado de respuesta Content-Disposition: adjunto; seguido del nombre del archivo. Eliminar la disposición del contenido meta; en línea; que abrirá el documento en la misma ventana
En java se establece como
fuente
Con archivos PDF grandes, el navegador se bloquea. En Mozilla, menú Herramientas → Opciones → Aplicaciones , luego al lado del tipo de contenido documento Adobe Acrobat. En el menú desplegable Acción, seleccione Preguntar siempre .
Esto no funcionó para mí, así que lo que funcionó fue:
Herramientas de menú * → Complementos → Adobe Acrobat (complemento Adobe PDF para Firefox) → DESACTIVAR. ¡Ahora puedo descargar libros electrónicos!
fuente