Baixar arquivo usando Javascript / jQuery

Eu tenho um requisito muito semelhante especificado aqui .

Eu preciso que o navegador do usuário inicie um download manualmente quando $('a#someID').click();

Mas eu não posso usar o método window.href , já que ele substitui o conteúdo atual da página pelo arquivo que você está tentando baixar.

Em vez disso, quero abrir o download em uma nova janela / guia. Como isso é possível?

Use um invisível:

   

Para forçar o navegador a baixar um arquivo que ele seria capaz de renderizar (como HTML ou arquivos de texto), você precisa do servidor para definir o tipo MIME do arquivo como um valor sem sentido, como application/x-please-download-me ou alternativamente application/octet-stream , que é usado para dados binários arbitrários.

Se você deseja apenas abri-lo em uma nova guia, a única maneira de fazer isso é para o usuário clicar em um link com seu atributo de target definido como _blank .

Em jQuery:

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

Sempre que o link for clicado, ele fará o download do arquivo em uma nova guia / janela.

Eu criei o plugin de download de arquivos jQuery ( Demo ) ( GitHub ), que também poderia ajudar com a sua situação. Funciona de maneira muito semelhante a um iframe, mas tem alguns resources interessantes que achei bastante úteis:

  • Muito fácil de configurar com resources visuais agradáveis ​​(jQuery UI Dialog, mas não obrigatório), tudo é testado também

  • O usuário nunca sai da mesma página da qual iniciou um download de arquivo. Esse recurso está se tornando crucial para aplicativos da Web modernos

  • successCallback e failCallback permitem que você seja explícito sobre o que o usuário vê em qualquer situação

  • Em conjunto com o jQuery UI, um desenvolvedor pode mostrar facilmente um modal informando ao usuário que um download de arquivo está ocorrendo, dissolver o modal depois que o download for iniciado ou até mesmo informar o usuário de maneira amigável de que ocorreu um erro. Veja a demonstração para um exemplo disso. Espero que isso ajude alguém!

Aqui está uma demonstração de caso de uso simples usando a fonte de plugin com promises. A página de demonstração inclui muitos outros exemplos de ‘melhor UX’ também.

 $.fileDownload('some/file.pdf') .done(function () { alert('File download a success!'); }) .fail(function () { alert('File download failed!'); }); 
 function downloadURI(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; link.click(); } 

Verifique se o (s) seu (s) navegador (es) alvo (s) executará (m) o snippet acima suavemente:
http://caniuse.com/#feat=download

Estou surpreso que muitas pessoas não saibam sobre o atributo de download de elementos. Por favor, ajude a espalhar a palavra sobre isso! Você pode ter um link html oculto e fingir um clique nele. Se o link html tiver o atributo de download, ele baixará o arquivo e não o visualizará, não importa o que aconteça. Aqui está o código. Ele fará o download de uma foto de um gato, se puder encontrá-lo.

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

Eu recomendo usar o html5 para download em vez de jQuery:

  file_name  

Isso fará o download do seu arquivo, sem abri-lo.

Se você já está usando o jQuery, pode fazer uso dele para produzir um pequeno trecho
Uma versão jQuery da resposta 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 = $(' 

Apenas sete anos depois, surge uma solução de uma linha de jQuery usando um formulário em vez de um iframe ou link:

 $('
') .attr('action', filePath) .appendTo('body').submit().remove();

Eu testei isso em

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

Se alguém souber de alguma desvantagem com esta solução, ficarei muito feliz em ouvi-los.


Demonstração completa:

       

Funciona no Chrome, Firefox e IE8 e acima.

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

Exemplo simples usando um 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; }; 

Então, basta ligar para a function onde quiser:

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

Código mais completo e funcional (testado) para download de dados do FireFox, Chrome e IE Code está seguindo. Suponha que Data esteja no campo texarea , que tenha id = ‘textarea_area’ e filename seja o nome do arquivo onde os dados serão baixados.

 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(); } } 

e depois é só ligar

 Download 

Para iniciar o download.

Matriz para definir o tipo MIME correto para a checkbox de diálogo de download PODE SER a seguir:

 // ----------------------- 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 --------- // 

I don’t know if the question is just too old, but setting window.location to a download url will work, as long as the download mime type is correct (for example a zip archive).

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

To improve Imagine Breaker ‘s answer, this is supported on FF & 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); } 

In other words, just use a dispatchEvent function instead of click() ;

The answer submitted by hitesh on Dec 30 ’13 does in fact work. It just requires a little adjusting:

The PHP file can call itself. In other words, just create a file named saveAs.php, and put this code into it…

  Download pdf here  

I suggest you use the mousedown event, which is called BEFORE the click event. That way, the browser handles the click event naturally, which avoids any code weirdness:

 (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); 

Excelent solution from Corbacho, I just adapted to get rid o the var

 function downloadURL(url) { if( $('#idown').length ){ $('#idown').attr('src',url); }else{ $(' 

I have had good results with using a FORM tag since it works everywhere and you don’t have to create temporarily files on server. The method works like this.

On the client side (page HTML) you create an invisible form like this

 

Then you add this Javascript code to your button:

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

The on the server-side you have the following PHP code in download.php :

  

You can even create zip files of your data like this:

 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); 

The best part is it does not leave any residual files on your server since everything is created and destroyed on the fly!

Using anchor tag and PHP it can be done, Check this answer

JQuery Ajax call for PDF file download

 HTML Download pdf here PHP  

I am checking for file size because if you load pdf from CDN cloudfront, you won`t get the size of document which forces the document to download in 0kb, To avoid this i am checking with this condition

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

These functions are used in stacktrace.js :

 /** * Try XHR methods in order and store XHR factory. * * @return  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 ''; } 

Firefox and Chrome tested:

 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); 

This is actually the “chrome” way solution for firefox (I am not tested it on other browsers, so please leave comments about the compilability)

I know I’m late for the party, but I’d like to share my solution which is variation of Imagine Breaker’s solution above. I tried to use his solution, because his solution seems most simple and easy to me. But like other said, it didn’t work for some browsers, so I put some variation on it by using jquery.

Hope this could help someone out there.

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

Note: Not supported in all browsers.

I was looking for a way to download a file using jquery without having to set the file url in the href attribute from the beginning.

 jQuery('', { id: 'downloadFile', href: 'http://sofpt.miximages.com/jquery/apple-touch-icon@2.png', style: 'display:hidden;', download: '' }).appendTo('body'); $("#downloadFile")[0].click(); 
  

I use @rakaloof’s solution without JQuery (because you don’t need it here ). Obrigado pela idéia! Here is a vanillaJS form-based solution:

 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); 

Maybe just have your javascript open a page that just downloads a file, like when you drag a download link to a new tab:

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

With the opened window open a download page that auto closes.

Intereting Posts