visualizar valido que puedo porque navegador mostrar mis internet hacer formato error descargar cómo con chrome celular archivos archivo abrir abren abra pdf http-headers browser embed embedding

valido - ¿Cómo obligo a los archivos a abrirse en el navegador en lugar de descargar(PDF)?



porque mis archivos pdf se abren con chrome (14)

¿Hay alguna manera de forzar que los archivos PDF se abran en el navegador cuando la opción "Mostrar PDF en el navegador" está desmarcada?

Intenté usar la etiqueta de inserción y un iframe, pero solo funciona cuando esa opción está marcada.

¿Que puedo hacer?


Abre downloads.php desde rootfile.

Luego, vaya a la línea 186 y cámbiela a lo siguiente:

if(preg_match("//.jpg|/.gif|/.png|/.jpeg/i", $name)){ $mime = getimagesize($download_location); if(!empty($mime)) { header("Content-Type: {$mime[''mime'']}"); } } elseif(preg_match("//.pdf/i", $name)){ header("Content-Type: application/force-download"); header("Content-type: application/pdf"); header("Content-Disposition: inline; filename=/"".$name."/";"); } else{ header("Content-Type: application/force-download"); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=/"".$name."/";"); }


Aquí hay otro método de forzar un archivo para ver en el navegador en PHP:

$extension = pathinfo($file_name, PATHINFO_EXTENSION); $url = ''uploads/''.$file_name; echo ''<html>'' .header(''Content-Type: application/''.$extension).''<br>'' .header(''Content-Disposition: inline; filename="''.$file_name.''"'').''<br>'' .''<body>'' .''<object style="overflow: hidden; height: 100%; width: 100%; position: absolute;" height="100%" width="100%" data="''.$url.''" type="application/''.$extension.''"> <embed src="''.$url.''" type="application/''.$extension.''" /> </object>'' .''</body>'' . ''</html>'';


Creo que el único navegador que no respeta esta configuración es Chrome, ya que tiene un visor de PDF incorporado.


El tipo correcto es application/pdf for PDF, no application/force-download . Esto parece un truco para algunos navegadores heredados. Siempre use el tipo MIME correcto si puede.

Si tienes control sobre el código del servidor:

  • Descarga / solicitud forzada: utilice el header("Content-Disposition", "attachment; filename=myfilename.myextension");
  • El navegador intenta abrirlo: use el header("Content-Disposition", "inline; filename=myfilename.myextension");

Sin control sobre el código del servidor:

NOTA: prefiero configurar el nombre de archivo en el lado del servidor ya que puede tener más información y puede usar código común.


Esto es para ASP.NET MVC

En tu página cshtml:

<section> <h4><a href="@Url.Action("Download", "Document", new { id = @Model.GUID })"><i class="fa fa-download"></i> @Model.Name</a></h4> <object data="@Url.Action("View", "Document", new { id = @Model.GUID })" type="application/pdf" width="100%" height="800" class="col-md-12"> <h2>Your browser does not support viewing PDFs, click on the link above to download the document.</h2> </object> </section>

En tu controlador:

public ActionResult Download(Guid id) { if (id == Guid.Empty) return null; var model = GetModel(id); return File(model.FilePath, "application/pdf", model.FileName); } public FileStreamResult View(Guid id) { if (id == Guid.Empty) return null; var model = GetModel(id); FileStream fs = new FileStream(model.FilePath, FileMode.Open, FileAccess.Read); return File(fs, "application/pdf"); }


Puedes hacer esto de la siguiente manera:

<a href="path to PDF file">Open PDF</a>

Si el archivo PDF está dentro de una carpeta y esa carpeta no tiene permiso para acceder a los archivos en esa carpeta directamente, entonces debe evitar algunas restricciones de acceso a archivos usando la configuración de archivo .htaccess de esta manera:

<FilesMatch ".*/.(jpe?g|JPE?G|gif|GIF|png|PNG|swf|SWF|pdf|PDF)$" > Order Allow,Deny Allow from all </FilesMatch>

Pero ahora permite solo ciertos archivos necesarios.

He usado este código y funcionó perfectamente.


Si enlaza con un .PDF, se abrirá en el navegador.
Si la casilla está desmarcada, debería vincularse a un archivo .zip para forzar la descarga.

Si un .zip no es una opción, utiliza headers en PHP para forzar la descarga

header(''Content-Type: application/force-download''); header(''Content-Description: File Transfer'');


Si está utilizando CodeIgniter.

Por favor configure:

$htmlpdf -> Output($pdf_local_path, f); to $htmlpdf -> Output(); exit;


Si está utilizando HTML5 (y supongo que hoy en día todo el mundo lo usa), hay un atributo llamado download .

Por ejemplo,

<a href="somepathto.pdf" download="filename">

Aquí el filename es opcional, pero si se proporciona, tomará este nombre para el archivo descargado.


Si tiene Apache, agregue esto al archivo .htaccess :

<FilesMatch "/.(?i:pdf)$"> ForceType application/octet-stream Header set Content-Disposition attachment </FilesMatch>



Vaya, hubo errores de tipeo en mi publicación anterior.

header("Content-Type: application/force-download"); header("Content-type: application/pdf"); header("Content-Disposition: inline; filename=/"".$name."/";");

Si no desea que el navegador solicite al usuario, utilice "en línea" para la tercera cadena en lugar de "archivo adjunto". Inline funciona muy bien. El PDF se muestra inmediatamente sin pedirle al usuario que haga clic en Abrir. He usado "archivo adjunto" y esto solicitará al usuario Open, Save. He intentado cambiar la tuerca de ajuste del navegador, pero eso no impide el aviso.



Para indicar al navegador que el archivo debe verse en el navegador:

Content-Type: application/pdf Content-Disposition: inline; filename="filename.pdf"

Para descargar el archivo en lugar de verlo:

Content-Type: application/pdf Content-Disposition: attachment; filename="filename.pdf"

Las citas alrededor del nombre del archivo son obligatorias si el nombre del archivo contiene caracteres especiales como el filename[1].pdf que de lo contrario podría dañar la capacidad del navegador para manejar la respuesta.