varios txt servidor descargar con automaticamente archivos archivo javascript jquery download

txt - Descargar archivo usando Javascript/jQuery



javascript descargar archivo automaticamente (23)

Tengo un requisito muy similar especificado here .

Necesito que el navegador del usuario inicie una descarga manualmente cuando $(''a#someID'').click();

Pero no puedo usar el método window.href , ya que reemplaza el contenido de la página actual con el archivo que está intentando descargar.

En su lugar quiero abrir la descarga en una nueva ventana / pestaña. ¿Cómo es esto posible?


Ejemplo simple usando un iframe

function downloadURL(url) { var hiddenIFrameID = ''hiddenDownloader'', iframe = document.getElementById(hiddenIFrameID); if (iframe === null) { iframe = document.createElement(''iframe''); iframe.id = hiddenIFrameID; iframe.style.display = ''none''; document.body.appendChild(iframe); } iframe.src = url; };

Entonces simplemente llama a la función donde quieras:

downloadURL(''path/to/my/file'');


El código más completo y de trabajo (probado) para descargar datos para FireFox, Chrome e IE Code es el siguiente. Supongamos que los datos están en el campo de área de texto, que tiene id = ''textarea_area'' y el nombre de archivo es el nombre del archivo donde se descargarán los datos.

function download(filename) { if (typeof filename===''undefined'') filename = ""; // default value = document.getElementById(''textarea_area'').value; filetype="text/*"; extension=filename.substring(filename.lastIndexOf(".")); for (var i = 0; i < extToMIME.length; i++) { if (extToMIME[i][0].localeCompare(extension)==0) { filetype=extToMIME[i][1]; break; } } var pom = document.createElement(''a''); pom.setAttribute(''href'', ''data: ''+filetype+'';charset=utf-8,'' + ''/ufeff'' + encodeURIComponent(value)); // Added BOM too pom.setAttribute(''download'', filename); if (document.createEvent) { if (navigator.userAgent.indexOf(''MSIE'') !== -1 || navigator.appVersion.indexOf(''Trident/'') > 0) { // IE blobObject = new Blob([''/ufeff''+value]); window.navigator.msSaveBlob(blobObject, filename); } else { // FF, Chrome var event = document.createEvent(''MouseEvents''); event.initEvent(''click'', true, true); pom.dispatchEvent(event); } } else if( document.createEventObject ) { // Have No Idea var evObj = document.createEventObject(); pom.fireEvent( ''onclick'' , evObj ); } else { // For Any Case pom.click(); } }

y luego solo llama

<a href="javascript:download();">Download</a>

Para iniciar la descarga.

La matriz para configurar el tipo MIME correcto para el diálogo de descarga PUEDE SER siguiente

// ----------------------- Extensions to MIME --------- // // List of mime types // combination of values from Windows 7 Registry and // from C:/Windows/System32/inetsrv/config/applicationHost.config // some added, including .7z and .dat var extToMIME = [ [".323", "text/h323"], [".3g2", "video/3gpp2"], [".3gp", "video/3gpp"], [".3gp2", "video/3gpp2"], [".3gpp", "video/3gpp"], [".7z", "application/x-7z-compressed"], [".aa", "audio/audible"], [".AAC", "audio/aac"], [".aaf", "application/octet-stream"], [".aax", "audio/vnd.audible.aax"], [".ac3", "audio/ac3"], [".aca", "application/octet-stream"], [".accda", "application/msaccess.addin"], [".accdb", "application/msaccess"], [".accdc", "application/msaccess.cab"], [".accde", "application/msaccess"], [".accdr", "application/msaccess.runtime"], [".accdt", "application/msaccess"], [".accdw", "application/msaccess.webapplication"], [".accft", "application/msaccess.ftemplate"], [".acx", "application/internet-property-stream"], [".AddIn", "text/xml"], [".ade", "application/msaccess"], [".adobebridge", "application/x-bridge-url"], [".adp", "application/msaccess"], [".ADT", "audio/vnd.dlna.adts"], [".ADTS", "audio/aac"], [".afm", "application/octet-stream"], [".ai", "application/postscript"], [".aif", "audio/x-aiff"], [".aifc", "audio/aiff"], [".aiff", "audio/aiff"], [".air", "application/vnd.adobe.air-application-installer-package+zip"], [".amc", "application/x-mpeg"], [".application", "application/x-ms-application"], [".art", "image/x-jg"], [".asa", "application/xml"], [".asax", "application/xml"], [".ascx", "application/xml"], [".asd", "application/octet-stream"], [".asf", "video/x-ms-asf"], [".ashx", "application/xml"], [".asi", "application/octet-stream"], [".asm", "text/plain"], [".asmx", "application/xml"], [".aspx", "application/xml"], [".asr", "video/x-ms-asf"], [".asx", "video/x-ms-asf"], [".atom", "application/atom+xml"], [".au", "audio/basic"], [".avi", "video/x-msvideo"], [".axs", "application/olescript"], [".bas", "text/plain"], [".bcpio", "application/x-bcpio"], [".bin", "application/octet-stream"], [".bmp", "image/bmp"], [".c", "text/plain"], [".cab", "application/octet-stream"], [".caf", "audio/x-caf"], [".calx", "application/vnd.ms-office.calx"], [".cat", "application/vnd.ms-pki.seccat"], [".cc", "text/plain"], [".cd", "text/plain"], [".cdda", "audio/aiff"], [".cdf", "application/x-cdf"], [".cer", "application/x-x509-ca-cert"], [".chm", "application/octet-stream"], [".class", "application/x-java-applet"], [".clp", "application/x-msclip"], [".cmx", "image/x-cmx"], [".cnf", "text/plain"], [".cod", "image/cis-cod"], [".config", "application/xml"], [".contact", "text/x-ms-contact"], [".coverage", "application/xml"], [".cpio", "application/x-cpio"], [".cpp", "text/plain"], [".crd", "application/x-mscardfile"], [".crl", "application/pkix-crl"], [".crt", "application/x-x509-ca-cert"], [".cs", "text/plain"], [".csdproj", "text/plain"], [".csh", "application/x-csh"], [".csproj", "text/plain"], [".css", "text/css"], [".csv", "text/csv"], [".cur", "application/octet-stream"], [".cxx", "text/plain"], [".dat", "application/octet-stream"], [".datasource", "application/xml"], [".dbproj", "text/plain"], [".dcr", "application/x-director"], [".def", "text/plain"], [".deploy", "application/octet-stream"], [".der", "application/x-x509-ca-cert"], [".dgml", "application/xml"], [".dib", "image/bmp"], [".dif", "video/x-dv"], [".dir", "application/x-director"], [".disco", "text/xml"], [".dll", "application/x-msdownload"], [".dll.config", "text/xml"], [".dlm", "text/dlm"], [".doc", "application/msword"], [".docm", "application/vnd.ms-word.document.macroEnabled.12"], [".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"], [".dot", "application/msword"], [".dotm", "application/vnd.ms-word.template.macroEnabled.12"], [".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"], [".dsp", "application/octet-stream"], [".dsw", "text/plain"], [".dtd", "text/xml"], [".dtsConfig", "text/xml"], [".dv", "video/x-dv"], [".dvi", "application/x-dvi"], [".dwf", "drawing/x-dwf"], [".dwp", "application/octet-stream"], [".dxr", "application/x-director"], [".eml", "message/rfc822"], [".emz", "application/octet-stream"], [".eot", "application/octet-stream"], [".eps", "application/postscript"], [".etl", "application/etl"], [".etx", "text/x-setext"], [".evy", "application/envoy"], [".exe", "application/octet-stream"], [".exe.config", "text/xml"], [".fdf", "application/vnd.fdf"], [".fif", "application/fractals"], [".filters", "Application/xml"], [".fla", "application/octet-stream"], [".flr", "x-world/x-vrml"], [".flv", "video/x-flv"], [".fsscript", "application/fsharp-script"], [".fsx", "application/fsharp-script"], [".generictest", "application/xml"], [".gif", "image/gif"], [".group", "text/x-ms-group"], [".gsm", "audio/x-gsm"], [".gtar", "application/x-gtar"], [".gz", "application/x-gzip"], [".h", "text/plain"], [".hdf", "application/x-hdf"], [".hdml", "text/x-hdml"], [".hhc", "application/x-oleobject"], [".hhk", "application/octet-stream"], [".hhp", "application/octet-stream"], [".hlp", "application/winhlp"], [".hpp", "text/plain"], [".hqx", "application/mac-binhex40"], [".hta", "application/hta"], [".htc", "text/x-component"], [".htm", "text/html"], [".html", "text/html"], [".htt", "text/webviewhtml"], [".hxa", "application/xml"], [".hxc", "application/xml"], [".hxd", "application/octet-stream"], [".hxe", "application/xml"], [".hxf", "application/xml"], [".hxh", "application/octet-stream"], [".hxi", "application/octet-stream"], [".hxk", "application/xml"], [".hxq", "application/octet-stream"], [".hxr", "application/octet-stream"], [".hxs", "application/octet-stream"], [".hxt", "text/html"], [".hxv", "application/xml"], [".hxw", "application/octet-stream"], [".hxx", "text/plain"], [".i", "text/plain"], [".ico", "image/x-icon"], [".ics", "application/octet-stream"], [".idl", "text/plain"], [".ief", "image/ief"], [".iii", "application/x-iphone"], [".inc", "text/plain"], [".inf", "application/octet-stream"], [".inl", "text/plain"], [".ins", "application/x-internet-signup"], [".ipa", "application/x-itunes-ipa"], [".ipg", "application/x-itunes-ipg"], [".ipproj", "text/plain"], [".ipsw", "application/x-itunes-ipsw"], [".iqy", "text/x-ms-iqy"], [".isp", "application/x-internet-signup"], [".ite", "application/x-itunes-ite"], [".itlp", "application/x-itunes-itlp"], [".itms", "application/x-itunes-itms"], [".itpc", "application/x-itunes-itpc"], [".IVF", "video/x-ivf"], [".jar", "application/java-archive"], [".java", "application/octet-stream"], [".jck", "application/liquidmotion"], [".jcz", "application/liquidmotion"], [".jfif", "image/pjpeg"], [".jnlp", "application/x-java-jnlp-file"], [".jpb", "application/octet-stream"], [".jpe", "image/jpeg"], [".jpeg", "image/jpeg"], [".jpg", "image/jpeg"], [".js", "application/x-javascript"], [".json", "application/json"], [".jsx", "text/jscript"], [".jsxbin", "text/plain"], [".latex", "application/x-latex"], [".library-ms", "application/windows-library+xml"], [".lit", "application/x-ms-reader"], [".loadtest", "application/xml"], [".lpk", "application/octet-stream"], [".lsf", "video/x-la-asf"], [".lst", "text/plain"], [".lsx", "video/x-la-asf"], [".lzh", "application/octet-stream"], [".m13", "application/x-msmediaview"], [".m14", "application/x-msmediaview"], [".m1v", "video/mpeg"], [".m2t", "video/vnd.dlna.mpeg-tts"], [".m2ts", "video/vnd.dlna.mpeg-tts"], [".m2v", "video/mpeg"], [".m3u", "audio/x-mpegurl"], [".m3u8", "audio/x-mpegurl"], [".m4a", "audio/m4a"], [".m4b", "audio/m4b"], [".m4p", "audio/m4p"], [".m4r", "audio/x-m4r"], [".m4v", "video/x-m4v"], [".mac", "image/x-macpaint"], [".mak", "text/plain"], [".man", "application/x-troff-man"], [".manifest", "application/x-ms-manifest"], [".map", "text/plain"], [".master", "application/xml"], [".mda", "application/msaccess"], [".mdb", "application/x-msaccess"], [".mde", "application/msaccess"], [".mdp", "application/octet-stream"], [".me", "application/x-troff-me"], [".mfp", "application/x-shockwave-flash"], [".mht", "message/rfc822"], [".mhtml", "message/rfc822"], [".mid", "audio/mid"], [".midi", "audio/mid"], [".mix", "application/octet-stream"], [".mk", "text/plain"], [".mmf", "application/x-smaf"], [".mno", "text/xml"], [".mny", "application/x-msmoney"], [".mod", "video/mpeg"], [".mov", "video/quicktime"], [".movie", "video/x-sgi-movie"], [".mp2", "video/mpeg"], [".mp2v", "video/mpeg"], [".mp3", "audio/mpeg"], [".mp4", "video/mp4"], [".mp4v", "video/mp4"], [".mpa", "video/mpeg"], [".mpe", "video/mpeg"], [".mpeg", "video/mpeg"], [".mpf", "application/vnd.ms-mediapackage"], [".mpg", "video/mpeg"], [".mpp", "application/vnd.ms-project"], [".mpv2", "video/mpeg"], [".mqv", "video/quicktime"], [".ms", "application/x-troff-ms"], [".msi", "application/octet-stream"], [".mso", "application/octet-stream"], [".mts", "video/vnd.dlna.mpeg-tts"], [".mtx", "application/xml"], [".mvb", "application/x-msmediaview"], [".mvc", "application/x-miva-compiled"], [".mxp", "application/x-mmxp"], [".nc", "application/x-netcdf"], [".nsc", "video/x-ms-asf"], [".nws", "message/rfc822"], [".ocx", "application/octet-stream"], [".oda", "application/oda"], [".odc", "text/x-ms-odc"], [".odh", "text/plain"], [".odl", "text/plain"], [".odp", "application/vnd.oasis.opendocument.presentation"], [".ods", "application/oleobject"], [".odt", "application/vnd.oasis.opendocument.text"], [".one", "application/onenote"], [".onea", "application/onenote"], [".onepkg", "application/onenote"], [".onetmp", "application/onenote"], [".onetoc", "application/onenote"], [".onetoc2", "application/onenote"], [".orderedtest", "application/xml"], [".osdx", "application/opensearchdescription+xml"], [".p10", "application/pkcs10"], [".p12", "application/x-pkcs12"], [".p7b", "application/x-pkcs7-certificates"], [".p7c", "application/pkcs7-mime"], [".p7m", "application/pkcs7-mime"], [".p7r", "application/x-pkcs7-certreqresp"], [".p7s", "application/pkcs7-signature"], [".pbm", "image/x-portable-bitmap"], [".pcast", "application/x-podcast"], [".pct", "image/pict"], [".pcx", "application/octet-stream"], [".pcz", "application/octet-stream"], [".pdf", "application/pdf"], [".pfb", "application/octet-stream"], [".pfm", "application/octet-stream"], [".pfx", "application/x-pkcs12"], [".pgm", "image/x-portable-graymap"], [".pic", "image/pict"], [".pict", "image/pict"], [".pkgdef", "text/plain"], [".pkgundef", "text/plain"], [".pko", "application/vnd.ms-pki.pko"], [".pls", "audio/scpls"], [".pma", "application/x-perfmon"], [".pmc", "application/x-perfmon"], [".pml", "application/x-perfmon"], [".pmr", "application/x-perfmon"], [".pmw", "application/x-perfmon"], [".png", "image/png"], [".pnm", "image/x-portable-anymap"], [".pnt", "image/x-macpaint"], [".pntg", "image/x-macpaint"], [".pnz", "image/png"], [".pot", "application/vnd.ms-powerpoint"], [".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"], [".potx", "application/vnd.openxmlformats-officedocument.presentationml.template"], [".ppa", "application/vnd.ms-powerpoint"], [".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"], [".ppm", "image/x-portable-pixmap"], [".pps", "application/vnd.ms-powerpoint"], [".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"], [".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"], [".ppt", "application/vnd.ms-powerpoint"], [".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"], [".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"], [".prf", "application/pics-rules"], [".prm", "application/octet-stream"], [".prx", "application/octet-stream"], [".ps", "application/postscript"], [".psc1", "application/PowerShell"], [".psd", "application/octet-stream"], [".psess", "application/xml"], [".psm", "application/octet-stream"], [".psp", "application/octet-stream"], [".pub", "application/x-mspublisher"], [".pwz", "application/vnd.ms-powerpoint"], [".qht", "text/x-html-insertion"], [".qhtm", "text/x-html-insertion"], [".qt", "video/quicktime"], [".qti", "image/x-quicktime"], [".qtif", "image/x-quicktime"], [".qtl", "application/x-quicktimeplayer"], [".qxd", "application/octet-stream"], [".ra", "audio/x-pn-realaudio"], [".ram", "audio/x-pn-realaudio"], [".rar", "application/octet-stream"], [".ras", "image/x-cmu-raster"], [".rat", "application/rat-file"], [".rc", "text/plain"], [".rc2", "text/plain"], [".rct", "text/plain"], [".rdlc", "application/xml"], [".resx", "application/xml"], [".rf", "image/vnd.rn-realflash"], [".rgb", "image/x-rgb"], [".rgs", "text/plain"], [".rm", "application/vnd.rn-realmedia"], [".rmi", "audio/mid"], [".rmp", "application/vnd.rn-rn_music_package"], [".roff", "application/x-troff"], [".rpm", "audio/x-pn-realaudio-plugin"], [".rqy", "text/x-ms-rqy"], [".rtf", "application/rtf"], [".rtx", "text/richtext"], [".ruleset", "application/xml"], [".s", "text/plain"], [".safariextz", "application/x-safari-safariextz"], [".scd", "application/x-msschedule"], [".sct", "text/scriptlet"], [".sd2", "audio/x-sd2"], [".sdp", "application/sdp"], [".sea", "application/octet-stream"], [".searchConnector-ms", "application/windows-search-connector+xml"], [".setpay", "application/set-payment-initiation"], [".setreg", "application/set-registration-initiation"], [".settings", "application/xml"], [".sgimb", "application/x-sgimb"], [".sgml", "text/sgml"], [".sh", "application/x-sh"], [".shar", "application/x-shar"], [".shtml", "text/html"], [".sit", "application/x-stuffit"], [".sitemap", "application/xml"], [".skin", "application/xml"], [".sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"], [".sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"], [".slk", "application/vnd.ms-excel"], [".sln", "text/plain"], [".slupkg-ms", "application/x-ms-license"], [".smd", "audio/x-smd"], [".smi", "application/octet-stream"], [".smx", "audio/x-smd"], [".smz", "audio/x-smd"], [".snd", "audio/basic"], [".snippet", "application/xml"], [".snp", "application/octet-stream"], [".sol", "text/plain"], [".sor", "text/plain"], [".spc", "application/x-pkcs7-certificates"], [".spl", "application/futuresplash"], [".src", "application/x-wais-source"], [".srf", "text/plain"], [".SSISDeploymentManifest", "text/xml"], [".ssm", "application/streamingmedia"], [".sst", "application/vnd.ms-pki.certstore"], [".stl", "application/vnd.ms-pki.stl"], [".sv4cpio", "application/x-sv4cpio"], [".sv4crc", "application/x-sv4crc"], [".svc", "application/xml"], [".swf", "application/x-shockwave-flash"], [".t", "application/x-troff"], [".tar", "application/x-tar"], [".tcl", "application/x-tcl"], [".testrunconfig", "application/xml"], [".testsettings", "application/xml"], [".tex", "application/x-tex"], [".texi", "application/x-texinfo"], [".texinfo", "application/x-texinfo"], [".tgz", "application/x-compressed"], [".thmx", "application/vnd.ms-officetheme"], [".thn", "application/octet-stream"], [".tif", "image/tiff"], [".tiff", "image/tiff"], [".tlh", "text/plain"], [".tli", "text/plain"], [".toc", "application/octet-stream"], [".tr", "application/x-troff"], [".trm", "application/x-msterminal"], [".trx", "application/xml"], [".ts", "video/vnd.dlna.mpeg-tts"], [".tsv", "text/tab-separated-values"], [".ttf", "application/octet-stream"], [".tts", "video/vnd.dlna.mpeg-tts"], [".txt", "text/plain"], [".u32", "application/octet-stream"], [".uls", "text/iuls"], [".user", "text/plain"], [".ustar", "application/x-ustar"], [".vb", "text/plain"], [".vbdproj", "text/plain"], [".vbk", "video/mpeg"], [".vbproj", "text/plain"], [".vbs", "text/vbscript"], [".vcf", "text/x-vcard"], [".vcproj", "Application/xml"], [".vcs", "text/plain"], [".vcxproj", "Application/xml"], [".vddproj", "text/plain"], [".vdp", "text/plain"], [".vdproj", "text/plain"], [".vdx", "application/vnd.ms-visio.viewer"], [".vml", "text/xml"], [".vscontent", "application/xml"], [".vsct", "text/xml"], [".vsd", "application/vnd.visio"], [".vsi", "application/ms-vsi"], [".vsix", "application/vsix"], [".vsixlangpack", "text/xml"], [".vsixmanifest", "text/xml"], [".vsmdi", "application/xml"], [".vspscc", "text/plain"], [".vss", "application/vnd.visio"], [".vsscc", "text/plain"], [".vssettings", "text/xml"], [".vssscc", "text/plain"], [".vst", "application/vnd.visio"], [".vstemplate", "text/xml"], [".vsto", "application/x-ms-vsto"], [".vsw", "application/vnd.visio"], [".vsx", "application/vnd.visio"], [".vtx", "application/vnd.visio"], [".wav", "audio/wav"], [".wave", "audio/wav"], [".wax", "audio/x-ms-wax"], [".wbk", "application/msword"], [".wbmp", "image/vnd.wap.wbmp"], [".wcm", "application/vnd.ms-works"], [".wdb", "application/vnd.ms-works"], [".wdp", "image/vnd.ms-photo"], [".webarchive", "application/x-safari-webarchive"], [".webtest", "application/xml"], [".wiq", "application/xml"], [".wiz", "application/msword"], [".wks", "application/vnd.ms-works"], [".WLMP", "application/wlmoviemaker"], [".wlpginstall", "application/x-wlpg-detect"], [".wlpginstall3", "application/x-wlpg3-detect"], [".wm", "video/x-ms-wm"], [".wma", "audio/x-ms-wma"], [".wmd", "application/x-ms-wmd"], [".wmf", "application/x-msmetafile"], [".wml", "text/vnd.wap.wml"], [".wmlc", "application/vnd.wap.wmlc"], [".wmls", "text/vnd.wap.wmlscript"], [".wmlsc", "application/vnd.wap.wmlscriptc"], [".wmp", "video/x-ms-wmp"], [".wmv", "video/x-ms-wmv"], [".wmx", "video/x-ms-wmx"], [".wmz", "application/x-ms-wmz"], [".wpl", "application/vnd.ms-wpl"], [".wps", "application/vnd.ms-works"], [".wri", "application/x-mswrite"], [".wrl", "x-world/x-vrml"], [".wrz", "x-world/x-vrml"], [".wsc", "text/scriptlet"], [".wsdl", "text/xml"], [".wvx", "video/x-ms-wvx"], [".x", "application/directx"], [".xaf", "x-world/x-vrml"], [".xaml", "application/xaml+xml"], [".xap", "application/x-silverlight-app"], [".xbap", "application/x-ms-xbap"], [".xbm", "image/x-xbitmap"], [".xdr", "text/plain"], [".xht", "application/xhtml+xml"], [".xhtml", "application/xhtml+xml"], [".xla", "application/vnd.ms-excel"], [".xlam", "application/vnd.ms-excel.addin.macroEnabled.12"], [".xlc", "application/vnd.ms-excel"], [".xld", "application/vnd.ms-excel"], [".xlk", "application/vnd.ms-excel"], [".xll", "application/vnd.ms-excel"], [".xlm", "application/vnd.ms-excel"], [".xls", "application/vnd.ms-excel"], [".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"], [".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"], [".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"], [".xlt", "application/vnd.ms-excel"], [".xltm", "application/vnd.ms-excel.template.macroEnabled.12"], [".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"], [".xlw", "application/vnd.ms-excel"], [".xml", "text/xml"], [".xmta", "application/xml"], [".xof", "x-world/x-vrml"], [".XOML", "text/plain"], [".xpm", "image/x-xpixmap"], [".xps", "application/vnd.ms-xpsdocument"], [".xrm-ms", "text/xml"], [".xsc", "application/xml"], [".xsd", "text/xml"], [".xsf", "text/xml"], [".xsl", "text/xml"], [".xslt", "text/xml"], [".xsn", "application/octet-stream"], [".xss", "application/xml"], [".xtp", "application/octet-stream"], [".xwd", "image/x-xwindowdump"], [".z", "application/x-compress"], [".zip", "application/x-zip-compressed"] ]; // ----------------------- End of Extensions to MIME --------- //


Funciona en Chrome, Firefox e IE8 y superiores.

var link=document.createElement(''a''); document.body.appendChild(link); link.href=url ; link.click();


He creado el complemento de descarga de archivos jQuery ( Demo ) ( GitHub ) que también podría ayudar con su situación. Funciona de manera muy similar con un iframe, pero tiene algunas características interesantes que he encontrado muy útiles:

  • Muy fácil de configurar con imágenes agradables (jQuery UI Dialog, pero no es obligatorio), todo está probado también

  • El usuario nunca abandona la misma página desde la que inició la descarga de un archivo. Esta característica se está volviendo crucial para las aplicaciones web modernas.

  • Las funciones successCallback y failCallback le permiten ser explícito sobre lo que el usuario ve en cualquier situación

  • Junto con jQuery UI, un desarrollador puede mostrar fácilmente un modal que le dice al usuario que se está produciendo una descarga de archivos, disolver el modal después de que comience la descarga o incluso informar al usuario de forma amigable que se ha producido un error. Vea la Demo para un ejemplo de esto. ¡Espero que esto ayude a alguien!

Aquí hay una demostración de caso de uso simple que usa la source del complemento con promesas. La Demo incluye muchos otros ejemplos, ''UX mejor'' también.

$.fileDownload(''some/file.pdf'') .done(function () { alert(''File download a success!''); }) .fail(function () { alert(''File download failed!''); });


Me sorprende que no mucha gente sepa sobre el atributo de descarga de un elemento. ¡Por favor ayuden a correr la voz sobre esto! Puedes tener un enlace html oculto y hacer un clic en él. Si el enlace html tiene el atributo de descarga, descarga el archivo, no lo ve, pase lo que pase. Aquí está el código. Descargará una foto de gato si la puede encontrar.

document.getElementById(''download'').click();

<a href="https://docs.google.com/uc?id=0B0jH18Lft7ypSmRjdWg1c082Y2M" download id="download" hidden></a>

Nota: Esto no es compatible con todos los navegadores: w3schools.com/tags/att_a_download.asp


Recomiendo usar html5 para descargar en lugar de jQuery:

<a href="your_link" download> file_name </a>

Esto descargará tu archivo, sin abrirlo.


Si ya está utilizando jQuery, puede aprovecharse de él para producir un fragmento más pequeño.
Una versión jQuery de la respuesta de Andrew:

var $idown; // Keep it outside of the function, so it''s initialized once. downloadURL : function(url) { if ($idown) { $idown.attr(''src'',url); } else { $idown = $(''<iframe>'', { id:''idown'', src:url }).hide().appendTo(''body''); } }, //... How to use it: downloadURL(''http://whatever.com/file.pdf'');


Solo siete años después, aquí aparece una solución jQuery de una línea que utiliza un formulario en lugar de un iframe o un enlace:

$(''<form></form>'') .attr(''action'', filePath) .appendTo(''body'').submit().remove();

He probado esto en

  • Cromo 55
  • Firefox 50
  • Edge IE8-10
  • iOS 10 (Safari / Chrome)
  • Android Chrome

Si alguien sabe de alguna desventaja con esta solución, me encantaría saber sobre ella.

Demostración completa:

<html> <head><script src="https://code.jquery.com/jquery-1.11.3.js"></script></head> <body> <script> var filePath = window.prompt("Enter a file URL","http://jqueryui.com/resources/download/jquery-ui-1.12.1.zip"); $(''<form></form>'').attr(''action'', filePath).appendTo(''body'').submit().remove(); </script> </body> </html>


Utilice un <iframe> invisible:

<iframe id="my_iframe" style="display:none;"></iframe> <script> function Download(url) { document.getElementById(''my_iframe'').src = url; }; </script>

Para forzar al navegador a descargar un archivo que de otra manera sería capaz de representar (como HTML o archivos de texto), necesita que el servidor configure el Tipo MIME del archivo en un valor sin sentido, como application/x-please-download-me o alternativamente application/octet-stream , que se utiliza para datos binarios arbitrarios.

Si solo desea abrirlo en una nueva pestaña, la única forma de hacerlo es que el usuario haga clic en un enlace con su atributo de target establecido en _blank .

En jQuery:

$(''a#someID'').attr({target: ''_blank'', href : ''http://localhost/directory/file.pdf''});

Cada vez que se haga clic en ese enlace, se descargará el archivo en una nueva pestaña / ventana.


Excelente solución de Corbacho, acabo de adaptarla para deshacerme de la var

function downloadURL(url) { if( $(''#idown'').length ){ $(''#idown'').attr(''src'',url); }else{ $(''<iframe>'', { id:''idown'', src:url }).hide().appendTo(''body''); } }


Firefox y Chrome probaron:

var link = document.createElement(''a''); link.download = ''fileName.ext'' link.href = ''http://down.serv/file.ext''; // Because firefox not executing the .click() well // We need to create mouse event initialization. var clickEvent = document.createEvent("MouseEvent"); clickEvent.initEvent("click", true, true); link.dispatchEvent(clickEvent);

En realidad, esta es la solución de "chrome" para Firefox (no he sido probado en otros navegadores, así que deje comentarios sobre la compilación)


No sé si la pregunta es demasiado antigua, pero la configuración de window.location en un url de descarga funcionará, siempre que el tipo de mime de descarga sea correcto (por ejemplo, un archivo zip).

var download = function(downloadURL) { location = downloadURL; }); download(''http://example.com/archive.zip''); //correct usage download(''http://example.com/page.html''); //DON''T


Nota: No es compatible con todos los navegadores.

Estaba buscando una forma de descargar un archivo usando jquery sin tener que configurar la URL del archivo en el atributo href desde el principio.

jQuery(''<a/>'', { id: ''downloadFile'', href: ''http://cdn.sstatic.net/Sites//img/[email protected]'', style: ''display:hidden;'', download: '''' }).appendTo(''body''); $("#downloadFile")[0].click();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


Para mejorar la respuesta de Imagine Breaker, esto es compatible con FF e IE:

var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); function downloadURI(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; link.dispatchEvent(evt); }

En otras palabras, simplemente use una dispatchEventfunción en lugar de click();


Tal vez simplemente haga que su javascript abra una página que solo descarga un archivo, como cuando arrastra un enlace de descarga a una nueva pestaña:

Window.open("https://www.MyServer. Org/downloads/ardiuno/WgiWho=?:8080")

Con la ventana abierta abre una página de descarga que se cierra automáticamente.


Usando la etiqueta de anclaje y PHP se puede hacer, verifique esta respuesta

JQuery Ajax llama para descargar archivos PDF

HTML <a href="www.example.com/download_file.php?file_source=example.pdf">Download pdf here</a> PHP <?php $fullPath = $_GET[''fileSource'']; if($fullPath) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { case "pdf": header("Content-Disposition: attachment; filename=/"".$path_parts["basename"]."/""); // use ''attachment'' to force a download header("Content-type: application/pdf"); // add here more headers for diff. extensions break; default; header("Content-type: application/octet-stream"); header("Content-Disposition: filename=/"".$path_parts["basename"]."/""); } if($fsize) {//checking if file size exist header("Content-length: $fsize"); } readfile($fullPath); exit; } ?>

Estoy comprobando el tamaño del archivo porque si carga pdf desde CDN cloudfront, no obtendrá el tamaño del documento que obliga al documento a descargar en 0kb. Para evitar esto, estoy comprobando esta condición

if($fsize) {//checking if file size exist header("Content-length: $fsize"); }


Estas funciones se utilizan en stacktrace.js :

/** * Try XHR methods in order and store XHR factory. * * @return <Function> XHR function or equivalent */ var createXMLHTTPObject = function() { var xmlhttp, XMLHttpFactories = [ function() { return new XMLHttpRequest(); }, function() { return new ActiveXObject(''Msxml2.XMLHTTP''); }, function() { return new ActiveXObject(''Msxml3.XMLHTTP''); }, function() { return new ActiveXObject(''Microsoft.XMLHTTP''); } ]; for (var i = 0; i < XMLHttpFactories.length; i++) { try { xmlhttp = XMLHttpFactories[i](); // Use memoization to cache the factory createXMLHTTPObject = XMLHttpFactories[i]; return xmlhttp; } catch (e) { } } } /** * @return the text from a given URL */ function ajax(url) { var req = createXMLHTTPObject(); if (req) { try { req.open(''GET'', url, false); req.send(null); return req.responseText; } catch (e) { } } return ''''; }


He tenido buenos resultados con el uso de una etiqueta FORM ya que funciona en todas partes y no tiene que crear archivos temporalmente en el servidor. El método funciona así.

En el lado del cliente (página HTML) creas una forma invisible como esta

<form method="POST" action="/download.php" target="_blank" id="downloadForm"> <input type="hidden" name="data" id="csv"> </form>

Luego agregas este código Javascript a tu botón:

$(''#button'').click(function() { $(''#csv'').val(''---your data---''); $(''#downloadForm'').submit(); }

En el lado del servidor tiene el siguiente código PHP en download.php:

<?php header(''Content-Type: text/csv''); header(''Content-Description: File Transfer''); header(''Content-Type: application/octet-stream''); header(''Content-Disposition: attachment; filename=out.csv''); header(''Content-Transfer-Encoding: binary''); header(''Connection: Keep-Alive''); header(''Expires: 0''); header(''Cache-Control: must-revalidate, post-check=0, pre-check=0''); header(''Pragma: public''); header(''Content-Length: '' . strlen($data)); echo $_REQUEST[''data'']; exit();

Incluso puedes crear archivos zip de tus datos de esta manera:

<?php $file = tempnam("tmp", "zip"); $zip = new ZipArchive(); $zip->open($file, ZipArchive::OVERWRITE); $zip->addFromString(''test.csv'', $_REQUEST[''data'']); $zip->close(); header(''Content-Type: application/zip''); header(''Content-Length: '' . filesize($file)); header(''Content-Disposition: attachment; filename="file.zip"''); readfile($file); unlink($file);

¡Lo mejor de todo es que no deja ningún archivo residual en su servidor ya que todo se crea y destruye sobre la marcha!


La respuesta presentada por Hitesh el 30 de diciembre de 2013 funciona de hecho. Solo requiere un poco de ajuste:

El archivo PHP puede llamarse a sí mismo. En otras palabras, simplemente cree un archivo llamado saveAs.php y ponga este código en él ...

<a href="saveAs.php?file_source=YourDataFile.pdf">Download pdf here</a> <?php if (isset($_GET[''file_source''])) { $fullPath = $_GET[''file_source'']; if($fullPath) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { case "pdf": header("Content-Disposition: attachment; filename=/"".$path_parts["basename"]."/""); // use ''attachment'' to force a download header("Content-type: application/pdf"); // add here more headers for diff. extensions break; default; header("Content-type: application/octet-stream"); header("Content-Disposition: filename=/"".$path_parts["basename"]."/""); } if($fsize) {//checking if file size exist header("Content-length: $fsize"); } readfile($fullPath); exit; } } ?>


Le sugiero que use el evento mousedown, que se llama ANTES del evento de clic. De esa manera, el navegador maneja el evento de clic naturalmente, lo que evita cualquier rareza de código:

(function ($) { // with this solution, the browser handles the download link naturally (tested in chrome and firefox) $(document).ready(function () { var url = ''/private/downloads/myfile123.pdf''; $("a#someID").on(''mousedown'', function () { $(this).attr("href", url); }); }); })(jQuery);


Sé que llego tarde a la fiesta, pero me gustaría compartir mi solución, que es una variación de la solución de Imagine Breaker anterior. Traté de usar su solución, porque su solución me parece más simple y fácil. Pero como se dijo en otros, no funcionó para algunos navegadores, así que le puse algunas variaciones usando jquery.

Espero que esto pueda ayudar a alguien por ahí.

function download(url) { var link = document.createElement("a"); $(link).click(function(e) { e.preventDefault(); window.location.href = url; }); $(link).click(); }


Uso la solución de @rakaloof sin JQuery (porque no la necesitas aquí ). ¡Gracias por la idea! Aquí hay una solución basada en formularios de vanillaJS:

const uri = ''https://upload.wikimedia.org/wikipedia/commons/b/bb/Test_ogg_mp3_48kbps.wav''; let form = document.createElement("form"); form.setAttribute(''action'', uri); document.body.appendChild(form); form.submit(); document.body.removeChild(document.body.lastElementChild);


function downloadURI(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; link.click(); }

Compruebe si su navegador (s) de destino ejecutará el fragmento anterior sin problemas:
http://caniuse.com/#feat=download