Viac na
Stiahnutie súboru pomocou Javascript/jQuery
Mám veľmi podobnú požiadavku uvedenú tu.
Potrebujem, aby používateľský prehliadač manuálne spustil sťahovanie, keď $('a#someID').click();
Nemôžem však použiť metódu window.href
, pretože tá nahradí obsah aktuálnej stránky súborom, ktorý sa'pokúšate stiahnuť.
Namiesto toho chcem stiahnutie otvoriť v novom okne/záložke. Ako je to možné?
322
3
Použite neviditeľný
<iframe>
:Ak chcete prinútiť prehliadač stiahnuť súbor, ktorý by inak dokázal vykresliť (napríklad HTML alebo textové súbory), musíte serveru nastaviť typ MIME Type na nezmyselnú hodnotu, napríklad
application/x-please-download-me
alebo alternatívneapplication/octet-stream
, ktorý sa používa pre ľubovoľné binárne dáta.Ak ho chcete otvoriť iba v novej karte, jediným spôsobom, ako to urobiť, je, aby používateľ klikol na odkaz s atribútom
target
nastaveným na_blank
.V jQuery:
Pri každom kliknutí na tento odkaz sa súbor stiahne do novej karty/okna.
Aktualizácia moderných prehliadačov na rok 2019
Tento prístup by som teraz odporúčal s niekoľkými výhradami:
2012 pôvodný prístup založený na jQuery/iframe/cookie
Vytvoril som plugin jQuery File Download (Demo) (GitHub), ktorý by tiež mohol pomôcť vo vašej situácii. Funguje dosť podobne ako iframe, ale má niekoľko skvelých funkcií, ktoré sa mi celkom hodili:
Veľmi jednoduché nastavenie s peknými vizuálmi (jQuery UI Dialog, ale nie je potrebný), všetko je tiež testované
Používateľ nikdy neopustí tú istú stránku, z ktorej inicioval sťahovanie súborov. Táto funkcia sa stáva kľúčovou pre moderné webové aplikácie
Funkcie successCallback a failCallback umožňujú explicitne určiť, čo používateľ uvidí v oboch situáciách
V spojení s používateľským rozhraním jQuery môže vývojár jednoducho zobraziť modal informujúci používateľa, že prebieha sťahovanie súboru, rozpustiť modal po začatí sťahovania alebo dokonca priateľským spôsobom informovať používateľa, že došlo k chybe. Príklad tohto postupu nájdete v Demo. Dúfam, že to niekomu pomôže!
Tu je jednoduchá ukážka prípadu použitia s použitím doplnku zdroj s prísľubmi. Stránka demo obsahuje aj mnoho ďalších, 'lepších UX' príkladov.
Ak už používate jQuery, môžete ho využiť na vytvorenie menšieho úryvku Verzia odpovede Andrewa v jazyku jQuery: