Ho un'idea di base sull'HTML. Voglio creare il link per il download nel mio sito Web di esempio, ma non ho idea di come crearlo. Come faccio a creare un collegamento per scaricare un file anziché visitarlo?
Ho un'idea di base sull'HTML. Voglio creare il link per il download nel mio sito Web di esempio, ma non ho idea di come crearlo. Come faccio a creare un collegamento per scaricare un file anziché visitarlo?
Risposte:
Questa risposta è obsoleta. Ora abbiamo l'
download
attributo . (vedi anche questo link a MDN )
Se per "collegamento per il download" si intende un collegamento a un file da scaricare, utilizzare
<a href="http://example.com/files/myfile.pdf" target="_blank">Download</a>
la target=_blank
farà una nuova finestra del browser compare prima che il download si avvia. Quella finestra viene normalmente chiusa quando il browser scopre che la risorsa è un download di file.
Si noti che i tipi di file noti al browser (ad es. Immagini JPG o GIF) verranno generalmente aperti all'interno del browser.
Puoi provare a inviare le intestazioni giuste per forzare un download come indicato ad esempio qui . (per questo è necessario lo scripting lato server o l'accesso alle impostazioni del server).
Nei browser moderni che supportano HTML5, è possibile:
<a href="link/to/your/download/file" download>Download link</a>
Puoi anche usare questo:
<a href="link/to/your/download/file" download="filename">Download link</a>
Ciò ti consentirà di modificare il nome del file effettivamente scaricato.
Oltre (o in sostituzione) <a download
all'attributo HTML5 già menzionato,
il comportamento del download su disco del browser può essere attivato anche dalla seguente intestazione di risposta http:
Content-Disposition: attachment; filename=ProposedFileName.txt;
Questo era il modo di fare prima di HTML5 (e funziona ancora con i browser che supportano HTML5).
download
all'attributo
Per collegarti al file, fai lo stesso di qualsiasi altro link alla pagina:
<a href="...">link text</a>
Per forzare il download delle cose anche se hanno un plugin incorporato (Windows + QuickTime = ugh), puoi usarlo nel tuo htaccess / apache2.conf:
AddType application/octet-stream EXTENSION
Ormai questo thread è probabilmente antico, ma funziona in html5 per il mio file locale.
Per i pdf:
<p><a href="file:///........example.pdf" download target="_blank">test pdf</a></p>
Questo dovrebbe aprire il pdf in una nuova finestra e consentire di scaricarlo (almeno in Firefox). Per qualsiasi altro file, basta impostarlo come nome file. Per immagini e musica, tuttavia, vorrai memorizzarli nella stessa directory del tuo sito. Quindi sarebbe come
<p><a href="images/logo2.png" download>test pdf</a></p>
L'attributo download non funziona in IE, ignora completamente il "download". Il download non funziona su Firefox se l'href punta a un sito remoto. Quindi l'esempio di Odin non funziona su Firefox 41.0.2.
C'è un'altra sottigliezza che può aiutare qui.
Voglio avere collegamenti che consentano sia la riproduzione e la visualizzazione nel browser sia uno per il semplice download. Il nuovo attributo di download va bene, ma non funziona sempre perché la coazione del browser a riprodurre o visualizzare il file è ancora molto forte.
MA .. questo si basa sull'esame dell'estensione sul nome file dell'URL! Non vuoi giocherellare con la mappatura dell'estensione del server perché vuoi consegnare lo stesso file in due modi diversi. Quindi, per il download, puoi ingannarlo collegando il file a un nome che è opaco per questa mappatura di estensione, puntandolo ad esso e quindi usando la funzione di ridenominazione del download per correggere il nome.
<a target="_blank" download="realname.mp3" href="realname.UNKNOWN">Download it</a>
<a target="_blank" href="realname.mp3">Play it</a>
Speravo solo di lanciare una query fittizia alla fine o altrimenti offuscare l'estensione avrebbe funzionato, ma purtroppo non funziona.
Puoi scaricare in vari modi seguendo la mia strada. Sebbene i file non possano essere scaricati a causa dell'autorizzazione 'allow-popups' non è impostata ma nel proprio ambiente, funzionerà perfettamente
<div className="col-6">
<a download href="https://www.w3schools.com/images/myw3schoolsimage.jpg" >Test Download </a>
</div>
un altro questo fallirà anche a causa di "X-Frame-Options" a "sameorigin".
<a href="https://www.w3schools.com/images/myw3schoolsimage.jpg" download>
<img src="https://www.w3schools.com/images/myw3schoolsimage.jpg" alt="W3Schools" width="104" height="142">
</a>
Come questo
<a href="www.yoursite.com/theThingYouWantToDownload">Link name</a>
Quindi un file name.jpg su un sito example.com sarebbe simile a questo
<a href="www.example.com/name.jpg">Image</a>
./www.example.com/name.jpg
: è necessario utilizzare http://
per i collegamenti assoluti con il dominio specificato.
so di essere in ritardo, ma questo è quello che ho ottenuto dopo 1 ora di ricerca
<?php
$file = 'file.pdf';
if (! file) {
die('file not found'); //Or do something
} else {
if(isset($_GET['file'])){
// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
// Read the file from disk
readfile($file); }
}
?>
e per il link scaricabile ho fatto questo
<a href="index.php?file=file.pdf">Download PDF</a>