{"id":5630,"date":"2023-10-03T07:56:57","date_gmt":"2023-10-03T10:56:57","guid":{"rendered":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/"},"modified":"2023-10-03T07:56:57","modified_gmt":"2023-10-03T10:56:57","slug":"forzar-descargas-de-archivos-con-php-ngeeks-com","status":"publish","type":"post","link":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/","title":{"rendered":"Forzar descargas de archivos con PHP &#8211; nGeeks.com"},"content":{"rendered":"<p><span class=\"post-meta-author\"><i class=\"fa fa-user\"><\/i><a href=\"https:\/\/www.ngeeks.com\/author\/mastergeek\/\" title=\"\">MasterGeek <\/a><\/span>  \t  \t\t  \t<span class=\"tie-date\"><i class=\"fa fa-clock-o\"><\/i>1 Abril, 2010<\/span>\t  \t<span class=\"post-cats\"><i class=\"fa fa-folder\"><\/i><a href=\"https:\/\/www.ngeeks.com\/category\/desarrollo-web\/\" rel=\"category tag\">Desarrollo web<\/a>, <a href=\"https:\/\/www.ngeeks.com\/category\/tutoriales\/\" rel=\"category tag\">Tutoriales<\/a><\/span>  \t  \t<span class=\"post-comments\"><i class=\"fa fa-comments\"><\/i><a href=\"https:\/\/www.ngeeks.com\/forzar-descargas-de-archivos-con-php\/#comments\">Comentarios<\/a><\/span>  <span class=\"post-views\"><i class=\"fa fa-eye\"><\/i>19,806 Visualizaciones<\/span> <br \/>En algunas ocasiones necesitamos que un archivo sea para descargar y no para ser visualizado en el navegador. Esto se puede hacer utilizando una tecnolog\u00eda del lado del servidor, como puede ser PHP.<br \/><a href=\"https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php.png\"><img fetchpriority=\"high\" decoding=\"async\" itemprop=\"image\" class=\"aligncenter size-medium wp-image-213\" title=\"Forzar descargas de archivos con PHP\" src=\"https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php-300x202.png\" alt=\"\" width=\"300\" height=\"202\" srcset=\"https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php-300x202.png 300w, https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php-150x101.png 150w, https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php.png 414w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><br \/>Veremos dos formas de hacerlo, una b\u00e1sica y otra m\u00e1s avanzada pero tambi\u00e9n m\u00e1s segura.<br \/><strong>Forzar descarga (B\u00e1sico)<\/strong><br \/>Primero creamos un archivo llamado, por ejemplo, &#8220;<strong>download.php<\/strong>&#8220;, en el que tendr\u00edamos que colocar el siguiente c\u00f3digo:<br \/><span id=\"more-200\"><\/span><br \/>Con <em>&#8220;Content-disposition: <span style=\"text-decoration: underline;\">attachment<\/span>; filename=$file&#8221;<\/em> indicamos que el archivo se debe mostrar como adjunto (para descargar).<br \/>Y para crear el enlace pondr\u00edamos:<br \/><strong>Forzar descarga (Seguro)<\/strong><br \/>Ahora veamos c\u00f3mo hacer el script m\u00e1s seguro.<br \/>Por un lado, el script anterior permite descargar cualquier archivo del servidor. Por ejemplo, cualquiera podr\u00eda descargar nuestro archivo &#8216;<em>index.php<\/em>&#8216; con solo cambiar la ruta de descarga por &#8220;<em>download.php?file=..\/index.php<\/em>&#8220;.<br \/>Adem\u00e1s, vamos a comprobar previamente que el archivo existe, para evitar errores en caso de que el archivo no se encuentre en el servidor.<br \/>Mediante la funci\u00f3n <em>basename()<\/em> hacemos que se devuelva \u00fanicamente el nombre del archivo, eliminando cualquier ruta, para que no se puedan descargar archivos de otras carpetas del servidor.<br \/>Con la variable <em>$root<\/em> hemos definido la carpeta donde se encuentran los archivos para descargar.<br \/>Etiquetas <a href=\"https:\/\/www.ngeeks.com\/t\/php\/\" rel=\"tag\">PHP<\/a> <a href=\"https:\/\/www.ngeeks.com\/t\/tutoriales\/\" rel=\"tag\">Tutoriales<\/a><br \/><span class=\"tie-date\"><i class=\"fa fa-clock-o\"><\/i>4 Febrero, 2021<\/span><br \/><span class=\"tie-date\"><i class=\"fa fa-clock-o\"><\/i>11 Marzo, 2019<\/span><br \/><span class=\"tie-date\"><i class=\"fa fa-clock-o\"><\/i>26 Febrero, 2019<\/span><br \/>Como sabes todo tel\u00e9fono nuevo contiene las configuraciones de f\u00e1brica, estas configuraciones no siempre est\u00e1n &hellip;<br \/>no me funciona, que podr\u00e1 ser?<br \/> estoy aplicandolo dentro de un wordpress, exactamente dentro de la carpeta de un theme&#8230; tendra algo que ver?<br \/>me retracto, todo funcionando.<br \/>Excelente codigo&#8230;. gracias por publicarlo..<br \/>Saludos<br \/>Hola de antemanos gracias. yo he estado probando el codigo y no me fun ciona solo sale el mensaje: El archivo no existe. nose si hay que cambiar algo en el codigo. Por favor necesito ayuda.<br \/>haber que a mi tambien me paso Carlos, cuando dice que no existe el archivo en $root = &#8220;musica\/&#8221;; (este es mi carpeta) tienes que poner el nombre de la carpeta tal cual la tienes en el servidor, si tiene mayusculas o no. ejemplo: $root = &#8220;musica\/&#8221;; asi esta en el servidor y $root = &#8220;Musica\/&#8221;; y asi lo escribo en download.php habra el error. por eso hay que ponerlo tal cual.<br \/>Gracias! muy util!!!<br \/>EXCELENTE! Un script que brinda seguridad de forma sencilla a la hora de permitir descargar en un sitio web. Realmente te agradezco much\u00edsimo tu aporte. Funciona maravillosamente!<br \/>Funciona perfecto!<br \/>Gracias<br \/>me funciona pero cuando descargo un txt descarga con toda la estructura de la pagina y no asi solo con el contenido del archivo. Por que?<br \/>Genial&#8230; A mi me funcion\u00f3 perfecto&#8230; Muchas gracias por el aporte.<br \/>Hola, gracias por  el script, solo una consulta, al bajar el archivo, me corta el nombre ejemplo, Naranjo en flor.mp3 lo baja como Naranjo, por lo que lo baja sin formato, no encentro motivo para que corte el nombre, sabr\u00ecas decirme por que?<br \/> gracias<br \/>Hola,<br \/> Prueba reemplazando esta linea:<br \/> header(&#8220;Content-Disposition: attachment; filename=$file&#8221;);<br \/>por esta:<br \/> header(&#8220;Content-disposition: attachment; filename=&#8221;$file&#8221;&#8221;);<br \/>Buena correcion! \ud83d\ude00<br \/>Saludos<br \/>Estoy tratando de aprender PHP por mi cuenta, no soy muy experto que digamos, una pregunta, cuando trato de descargar un archivo utilizando tu c\u00f3digo, no se me abre el cuadro de di\u00e1logo que da la opci\u00f3n de abrir o descargar&#8230;. El fichero trata de abrirse en una ventana, si es un archivo de texto se abre pero todo el texto sale todo pegado sin saltos de linea, y si es un pdf pues salen un mont\u00f3n de caracteres incomprensibles&#8230;.. <br \/>Alguna sugerencia por favor<br \/> gracias<br \/>Bueno solo use el c\u00f3digo que es el B\u00e1sico pero quisiera saber el archivo que voy a descargar tiene un limite de peso, mi pregunta va si mi archivo pesa por decir 50mb y tengo 20 de esos tama\u00f1os de archivos a mi sitio web \u00bfNo lo hace demasiado pesado? Gracias de antemano por la respuesta y por el c\u00f3digo &#8230;.. Saludos un amigo que desea aprender y inmiscuir al mundo de la Web &#8230; \ud83d\ude00<br \/>Puede ser demasiado pesado para tu servidor o puede que tu hosting no te permita subir archivos para descargas, pero forzar las descargas no tiene nada que ver, el tama\u00f1o de los archivos no influye en eso. Saludos.<br \/>Funciona super bien, pero tengo un problema, el archivo que desea descarar es un PDF y cuando me descargar no tiene extensi\u00f3n, solo me descarga con el nombre del archivo y sin la extensi\u00f3n .pdf. Como puedo solucionar eso?<br \/>has la correccion en el codigo, esta en el #post 11 y listo \ud83d\ude00<br \/>Te aconsejo hacer un ob_clean() y un flush() antes del readfile() para vaciar el buffer de salida ya que PUEDE (probable sobre todo con videos, m\u00fasica, im\u00e1genes) que luego el programa con el que los abras no reconozca el formato del archivo.<br \/> Si pruebas con un archivo de texto, veras que el archivo que descargas contiene el HTML de la p\u00e1gina + su contenido (con archivos binarios (ej: video) directamente no se abre.<br \/>Gracias por el aporte&#8230; me funciona super bien<br \/>Excelente aporte. completo y muy claro. Tenia dias buscando el c\u00f3digo y por alguna raz\u00f3n no funcionaba ninguno.<br \/> Saludos<br \/>Excelente brother, de todos los posts que vi este fue el que me funciono a la primera mediante tu script seguro. 100pts&#8230;<br \/>Hay que cambiar algo en el c\u00f3digo? siempre me sale que el archivo no existe y no logro hacerlo funcionar<br \/>Comprueba que est\u00e1s indicando la ruta correcta para descargar el archivo y que el archivo se encuentra en el directorio correcto. Saludos.<br \/>Excelente c\u00f3digo, implementado! Funciona!<br \/>Saludos y gracias!<br \/>Cuando ejecuto el link se carga una pagina en blanco con el error &#8220;undefined&#8221;, si vuelvo a actualizar la pagina con F5 si que me sale la ventana para que elija la descarga o la abertura del fichero.<br \/> Si el link lo ejecuto sin venir de ninguna pagina funciona a la primera. (estoy utilizando las librerias .css y .js jquery para iphone).<br \/>tengo un problema, algo en el codigo me bloquea el contenido del body y no me muestra nada :S lo he situado en distintos lugares y nada, ayuda porfa :S<br \/>Hola . Gracias por tu aporte!<br \/>En mi localhost funciona correctamente, pero al subirlo al host del cliente deja de funcionar. Alguna idea?<br \/>saludos.<br \/>hola buenas&#8230; estoy intentando usar este c\u00f3digo para un pdf, pero al descargarlo me dice que el archivo es erroneo que tal vez se descodifico mal&#8230;. \ud83d\ude41<br \/>Hola!!!<br \/> He probado tu c\u00f3digo, pero al descargar el archivo (un pdf) me dice que el archivo est\u00e1 da\u00f1ado y no se puede reparar..<br \/> qu\u00e9 es lo que hay que arreglar para que el archivo baje bien?<br \/> ya que al subirlo&#8230; est\u00e1 bueno, y lo reviso en la carpeta de subidos y tambi\u00e9n est\u00e1 intacto, pero al momento de descargarlo, baja da\u00f1ado, espero puedas ayudarme<br \/>saludos<br \/>Gracias por este script, me sirvio muchisimo<br \/>Funciona Perfecto!!<br \/>Gracias<br \/>gracias por el aporte , pero me presente un problema en todos los navegadores, cuando se descarga un archivo pesado, no permite la descarga de 2 o mas archivos, se queda leyendo y no permite otra descarga paralela, ya intente abriendo en otra pagina alguna idea&#8230;<br \/>gracias por el aporte. En el localhost funciona perfectamente. Ahora una preguntilla al subirlo a un servidor(gratuito) a trav\u00e9s de ftp. Ha dejado de funcionar esta descarga. \u00bfPara descargar archivos desde un servidor hay que hacerlo de otra manera?,  o no me funciona por posibles permisos y seguridad del servidor.<br \/>Puede ser un problema de configuraci\u00f3n del servidor.<br \/>Por ejemplo, los hostings compartidos suelen tener configuraciones bastante restrictivas y mucho m\u00e1s si es gratuito.<br \/>Saludos.<br \/>veo que hay alguien que ha preguntado lo mismo, en el 24&#8230; y no hay respuesta, cachis la mar. bueno si encuentro soluci\u00f3n lo pondr\u00e9 por aqu\u00ed tb&#8230; Saludos<br \/>Localmente, ustedes tienen control de la direcci\u00f3n de almacenamiento del archivo ($path), sin embargo, cuando utilizan un servidor &#8220;ajeno&#8221; deber\u00edan verificar previamente que el path si sea el que le indican a la p\u00e1gina de descarga.<br \/> Saludos !<br \/>El c\u00f3digo funciona perfecto, pero cuando descargo un archivo RAR en la ventana de dialogo aparece como que es de tipo JPEG \u00bfAlguien sabe a que se debe? Gracias.<br \/>Buenas tengo un problema, cuando descargo el archivo, trato de abrirlo y no tiene formato, a pesar de que la imagen se baja con el nombre que corresponde y con la extencion .jpg<br \/> Que puedo hacer?<br \/> Agradezco la ayuda.<br \/>Es un c\u00f3digo muy \u00fatil,<br \/>Con respecto al comentario #29 si se le incluyen estas dos lineas, los archivos ya no se da\u00f1an <br \/>\/\/ Descargar archivo<br \/>ob_end_clean();<br \/> flush();<br \/> readfile($file);<br \/>Saludos<br \/>gracias por el aporte, me fue muy util.<br \/> Probe con .doc, .pdf, .jpg y funciono perfecto<br \/>En los iphone &#8211; safari no funciona. En cambio en los Android se descarga sin problemas. Sab\u00e9is c\u00f3mo se podr\u00eda solucionar???<br \/>me pasa igual que mi conpa~eros<br \/>Muchas gracias he!<br \/>Gracias!!!!!!!!<br \/>Hola,<br \/>Estoy probando estos scripts, que son la ca\u00f1a (felicidades) pero en Chrome (no en IE ni FireFox) obtengo este mensaje por resultado:<br \/>&#8220;Se han recibido encabezados duplicados desde el servidor.&#8221;<br \/>Alguna idea? Gracias!!<br \/> DaniWeb<br \/>el codigo funciona solo miren bn las lineas !!<br \/>Gracias<br \/>Hola. Lo probe local y me funciona perfecto. En el servidor en vez de descargar la imagen, veo la misma pero el codigo detras de esta. Alguna idea?<br \/>A mi me funciona bastante bien, he probado con varios tipos de archivos pero solo el .rar y el .doc se los descarga directamente. Los .pdf los abre en el navegador y con el mp3 sale la pantalla en blanco.<br \/> Pero lo que a mi me interesa son los .doc \u00f3 los .pdf porque he creado de forma din\u00e1mica este enlace:<br \/> echo &#8220;<a>$t_descargar<\/a>&#8220;;<br \/> Necesito que me cree la factura que se va a descargar (para no tener que hacerla yo manualmente)<br \/> \u00bfalguien puede decirme como se hace?<br \/>Funciona muy bien; cuando cambies <br \/>header(\u201cContent-Disposition: attachment; filename=$file\u201d);<br \/> por esta:<br \/> header(\u201cContent-disposition: attachment; filename=\u201d$file\u201d&#8221;);<br \/>Fijate en las comillas deben de  ser iguales si no marca error.<br \/>Super \u00fatil.<br \/> No olviden hacer las modificaciones de los comentarios<br \/> #40 y #50.<br \/> Muchas gracias.<br \/>Hola!<br \/>Todos los .doc y .rtf que me intento descargar  aparecen err\u00f3neos, caracteres raros, vamos, los descarga corruptos.\u00bfPoruq\u00e9 puede ser?<br \/>no se en que me equivocado no me fuciona el codigo <br \/>y en  download.php<br \/>quiero que descargue documentos ese serie el codigo tambien<br \/> o me pueden decir que codigo seria por favor<br \/> y el dow<br \/>que codigo seria para descargar documentos llamarlo desde mi apgina web por favor<br \/>Buenas he probado vuestro c\u00f3digo con todo  tipo de archivos y con todo tipo de cabeceras y con todas las opciones que ibais poniendo en los comentarios y mi resultado a sido todo el contrario  fuerza la apertura del fichero en el propio navegador (chrome, firefox, opera, ie 11, maxthon, safari) al final he terminado por sospechar que es cosa de 1and1 que es mi hosting, pod\u00e9is decirme algo al respecto?<br \/>Me auto respondo ya que parece ser que nadie le ha pasado lo mismo nada mas que a mi.<br \/>Al final no es culpa del hosting, si no de la codificaci\u00f3n del php, lo he guardado en ANSI y todo solucionado.<br \/>Funciona bien, pero cuando descargo los archivos estos pesan 2kb con error de apertura, la funci\u00f3n si  ubica el archivo ya que si lo borro del servidor me marca el  error &#8220;el archivo no existe&#8221;, hay alguna razon por la que no se descarguen bien?.<br \/>el codigo final deberia ser:<br \/>Tu script funciona muy bien al poner $root = &#8220;archivos\/&#8221;; y descarga  la foto.jpg pero al querer descargar un archivo del subdirectorio archivos\/mp4\/video.mp4 no lo descarga y si el video lo pongo en la raiz archivos si jala pero dentro de la subcarpeta ya no <br \/>como puedo resolver eso de que tambien descarge archivos\/subcarpeta\/video3.mp4 <br \/>por ejemplo<br \/>Hola todos, el c\u00f3digo funciona de maravilla pero me he llevado una sorpresa al ver que el crome oculta todos los enlaces de descarga. \u00bfme pod\u00e9is ayudar?.<br \/> Con todos los navegadores funciona, incluso safari, menos crome.<br \/> Saludos<br \/> <a href=\"#comment-268698\" rel=\"nofollow\"><br \/> <strong><em>zknner:<\/em><\/strong><br \/> <\/a><br \/>  Tu script funciona muy bien al poner $root = \u201carchivos\/\u201d; y descarga  la foto.jpg pero al querer descargar un archivo del subdirectorio archivos\/mp4\/video.mp4 no lo descarga y si el video lo pongo en la raiz archivos si jala pero dentro de la subcarpeta ya no<br \/> como puedo resolver eso de que tambien descarge archivos\/subcarpeta\/video3.mp4<br \/> por ejemplo <br \/>amigo a mi no me descarga de ninguna forma noc como colocarlo para que me descargue de la carpeta public_html de mi hosting<br \/>me pareci\u00f3 m\u00e1s f\u00e1cil este.. para entornos no agresivos ahhaha<br \/>Pingback: <a href='http:\/\/bitacoras.com\/anotaciones\/forzar-descargas-de-archivos-con-php\/9126364' rel='external nofollow' class='url'>Bitacoras.com<\/a><br \/>Pingback: Forzar la descarga de archivos con PHP | ZeppelinuX<br \/><span id=\"email-notes\">Tu direcci\u00f3n de correo electr\u00f3nico no ser\u00e1 publicada.<\/span> Los campos obligatorios est\u00e1n marcados con <span class=\"required\">*<\/span><br \/><label for=\"comment\">Comentario<\/label> <textarea id=\"comment\" name=\"comment-cedf7bf70163d56770a6a\" cols=\"45\" rows=\"8\" maxlength=\"65525\" aria-required=\"true\" required=\"required\"><\/textarea><textarea name=\"comment\" rows=\"1\" cols=\"1\" style=\"display:none\"><\/textarea><br \/><label for=\"author\">Nombre <span class=\"required\">*<\/span><\/label> <input id=\"author\" name=\"author\" type=\"text\" value=\"\" size=\"30\" maxlength=\"245\" aria-required='true' required='required' \/><br \/><label for=\"email\">Correo electr\u00f3nico <span class=\"required\">*<\/span><\/label> <input id=\"email\" name=\"email\" type=\"email\" value=\"\" size=\"30\" maxlength=\"100\" aria-describedby=\"email-notes\" aria-required='true' required='required' \/><br \/><label for=\"url\">Web<\/label> <input id=\"url\" name=\"url\" type=\"url\" value=\"\" size=\"30\" maxlength=\"200\" \/><br \/><input name=\"submit\" type=\"submit\" id=\"submit\" class=\"submit\" value=\"Publicar comentario\" \/> <input type='hidden' name='comment_post_ID' value='200' id='comment_post_ID' \/> <input type='hidden' name='comment_parent' id='comment_parent' value='0' \/> <br \/><input type=\"hidden\" id=\"akismet_comment_nonce\" name=\"akismet_comment_nonce\" value=\"9dc41103ff\" \/><br \/><input type=\"text\" name=\"nxts\" value=\"1696330616\" \/><input type=\"text\" name=\"nxts_signed\" value=\"a0765d9a0fe210f651b69300efe55cd9a8ec900a\" \/><input type=\"text\" name=\"496bfc60cef80\" value=\"2cc577e24ed3ed0f6ab1d\" \/><input type=\"text\" name=\"6d15908a135c8c12b588f\" value=\"\" \/><br \/><input type=\"hidden\" id=\"ak_js\" name=\"ak_js\" value=\"51\"\/><br \/><input type=\"text\" name=\"log\" id=\"log\" title=\"Usuario\" value=\"Usuario\" onfocus=\"if (this.value == 'Usuario') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = 'Usuario';}\"  size=\"33\" \/><br \/><input type=\"password\" name=\"pwd\" id=\"pwd\" title=\"Contrase\u00f1a\" value=\"Contrase\u00f1a\" onfocus=\"if (this.value == 'Contrase\u00f1a') {this.value = '';}\" onblur=\"if (this.value == '') {this.value = 'Contrase\u00f1a';}\" size=\"33\" \/><\/p>\n<p><a href=\"https:\/\/news.google.com\/rss\/articles\/CBMiPGh0dHBzOi8vd3d3Lm5nZWVrcy5jb20vZm9yemFyLWRlc2Nhcmdhcy1kZS1hcmNoaXZvcy1jb24tcGhwL9IBQGh0dHBzOi8vd3d3Lm5nZWVrcy5jb20vZm9yemFyLWRlc2Nhcmdhcy1kZS1hcmNoaXZvcy1jb24tcGhwL2FtcC8?oc=5\">source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MasterGeek 1 Abril, 2010 Desarrollo web, Tutoriales Comentarios 19,806 Visualizaciones En algunas ocasiones necesitamos que un archivo sea para descargar y no para ser visualizado en el navegador. Esto se puede hacer utilizando una tecnolog\u00eda del lado del servidor, como puede ser PHP.Veremos dos formas de hacerlo, una b\u00e1sica y otra m\u00e1s avanzada pero tambi\u00e9n&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5631,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[69],"class_list":["post-5630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriais","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.1 (Yoast SEO v22.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Forzar descargas de archivos con PHP - nGeeks.com - 4tuneagencia.digital<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Forzar descargas de archivos con PHP - nGeeks.com\" \/>\n<meta property=\"og:description\" content=\"MasterGeek 1 Abril, 2010 Desarrollo web, Tutoriales Comentarios 19,806 Visualizaciones En algunas ocasiones necesitamos que un archivo sea para descargar y no para ser visualizado en el navegador. Esto se puede hacer utilizando una tecnolog\u00eda del lado del servidor, como puede ser PHP.Veremos dos formas de hacerlo, una b\u00e1sica y otra m\u00e1s avanzada pero tambi\u00e9n...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\" \/>\n<meta property=\"og:site_name\" content=\"4tuneagencia.digital\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-03T10:56:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php-300x202.png\" \/>\n<meta name=\"author\" content=\"4tune\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"4tune\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\"},\"author\":{\"name\":\"4tune\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/person\/7c40d2e8b9964c2390122613459c2100\"},\"headline\":\"Forzar descargas de archivos con PHP &#8211; nGeeks.com\",\"datePublished\":\"2023-10-03T10:56:57+00:00\",\"dateModified\":\"2023-10-03T10:56:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\"},\"wordCount\":2186,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png\",\"keywords\":[\"Tutorial\"],\"articleSection\":[\"Tutoriais\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\",\"url\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\",\"name\":\"Forzar descargas de archivos con PHP - nGeeks.com - 4tuneagencia.digital\",\"isPartOf\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png\",\"datePublished\":\"2023-10-03T10:56:57+00:00\",\"dateModified\":\"2023-10-03T10:56:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage\",\"url\":\"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png\",\"contentUrl\":\"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png\",\"width\":300,\"height\":202},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/4tuneagencia.digital\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forzar descargas de archivos con PHP &#8211; nGeeks.com\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#website\",\"url\":\"https:\/\/4tuneagencia.digital\/blog\/\",\"name\":\"4tuneagencia.digital\",\"description\":\"Marketing e Web Designer \",\"publisher\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/4tuneagencia.digital\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#organization\",\"name\":\"4tuneagencia.digital\",\"url\":\"https:\/\/4tuneagencia.digital\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/09\/novo-logo-e1694954525541.png\",\"contentUrl\":\"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/09\/novo-logo-e1694954525541.png\",\"width\":250,\"height\":250,\"caption\":\"4tuneagencia.digital\"},\"image\":{\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/person\/7c40d2e8b9964c2390122613459c2100\",\"name\":\"4tune\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e81e8ea0176022ee4555117aee5e3092bff2a7aaa930134f8023c7d4bc2f1495?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e81e8ea0176022ee4555117aee5e3092bff2a7aaa930134f8023c7d4bc2f1495?s=96&d=mm&r=g\",\"caption\":\"4tune\"},\"sameAs\":[\"http:\/\/4tuneagencia.digital\"],\"url\":\"https:\/\/4tuneagencia.digital\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Forzar descargas de archivos con PHP - nGeeks.com - 4tuneagencia.digital","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/","og_locale":"pt_BR","og_type":"article","og_title":"Forzar descargas de archivos con PHP - nGeeks.com","og_description":"MasterGeek 1 Abril, 2010 Desarrollo web, Tutoriales Comentarios 19,806 Visualizaciones En algunas ocasiones necesitamos que un archivo sea para descargar y no para ser visualizado en el navegador. Esto se puede hacer utilizando una tecnolog\u00eda del lado del servidor, como puede ser PHP.Veremos dos formas de hacerlo, una b\u00e1sica y otra m\u00e1s avanzada pero tambi\u00e9n...","og_url":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/","og_site_name":"4tuneagencia.digital","article_published_time":"2023-10-03T10:56:57+00:00","og_image":[{"url":"https:\/\/www.ngeeks.com\/wp-content\/uploads\/2010\/04\/forzar-descargas-php-300x202.png"}],"author":"4tune","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"4tune","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#article","isPartOf":{"@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/"},"author":{"name":"4tune","@id":"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/person\/7c40d2e8b9964c2390122613459c2100"},"headline":"Forzar descargas de archivos con PHP &#8211; nGeeks.com","datePublished":"2023-10-03T10:56:57+00:00","dateModified":"2023-10-03T10:56:57+00:00","mainEntityOfPage":{"@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/"},"wordCount":2186,"commentCount":0,"publisher":{"@id":"https:\/\/4tuneagencia.digital\/blog\/#organization"},"image":{"@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage"},"thumbnailUrl":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png","keywords":["Tutorial"],"articleSection":["Tutoriais"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/","url":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/","name":"Forzar descargas de archivos con PHP - nGeeks.com - 4tuneagencia.digital","isPartOf":{"@id":"https:\/\/4tuneagencia.digital\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage"},"image":{"@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage"},"thumbnailUrl":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png","datePublished":"2023-10-03T10:56:57+00:00","dateModified":"2023-10-03T10:56:57+00:00","breadcrumb":{"@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#primaryimage","url":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png","contentUrl":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png","width":300,"height":202},{"@type":"BreadcrumbList","@id":"https:\/\/4tuneagencia.digital\/blog\/forzar-descargas-de-archivos-con-php-ngeeks-com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/4tuneagencia.digital\/blog\/"},{"@type":"ListItem","position":2,"name":"Forzar descargas de archivos con PHP &#8211; nGeeks.com"}]},{"@type":"WebSite","@id":"https:\/\/4tuneagencia.digital\/blog\/#website","url":"https:\/\/4tuneagencia.digital\/blog\/","name":"4tuneagencia.digital","description":"Marketing e Web Designer ","publisher":{"@id":"https:\/\/4tuneagencia.digital\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/4tuneagencia.digital\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/4tuneagencia.digital\/blog\/#organization","name":"4tuneagencia.digital","url":"https:\/\/4tuneagencia.digital\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/09\/novo-logo-e1694954525541.png","contentUrl":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/09\/novo-logo-e1694954525541.png","width":250,"height":250,"caption":"4tuneagencia.digital"},"image":{"@id":"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/person\/7c40d2e8b9964c2390122613459c2100","name":"4tune","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/4tuneagencia.digital\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e81e8ea0176022ee4555117aee5e3092bff2a7aaa930134f8023c7d4bc2f1495?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e81e8ea0176022ee4555117aee5e3092bff2a7aaa930134f8023c7d4bc2f1495?s=96&d=mm&r=g","caption":"4tune"},"sameAs":["http:\/\/4tuneagencia.digital"],"url":"https:\/\/4tuneagencia.digital\/blog\/author\/admin\/"}]}},"jetpack_featured_media_url":"https:\/\/4tuneagencia.digital\/blog\/wp-content\/uploads\/2023\/10\/wp-header-logo-105.png","_links":{"self":[{"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/posts\/5630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/comments?post=5630"}],"version-history":[{"count":0,"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/posts\/5630\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/media\/5631"}],"wp:attachment":[{"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/media?parent=5630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/categories?post=5630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/4tuneagencia.digital\/blog\/wp-json\/wp\/v2\/tags?post=5630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}