web-dev-qa-db-fra.com

Chrome L'attribut de téléchargement ne fonctionne pas

J'ai rencontré un comportement inattendu de Chrome depuis la dernière version: dans Firefox, ce code fonctionne parfaitement bien:

<a id="playlist" class="button" download="Name.xspf" href="data:application/octet-stream;base64,PD94ANDSOON" style="display: inline;">Download Me</a>

Il ne fonctionne pas dans Chrome (Téléchargement simple d'un fichier nommé "Download"), mais a fonctionné très bien auparavant. Que dois-je changer pour qu'il fonctionne à nouveau?

33
Buffer Overflow

Après quelques recherches, j'ai finalement trouvé votre problème.

<a> attribut de téléchargement:

Si l'en-tête HTTP Content-Disposition: est présent et donne un nom de fichier différent de cet attribut, l'en-tête HTTP a priorité sur cet attribut.

Si cet attribut est présent et que Content-Disposition: est défini sur inline, Firefox donne la priorité à Content-Disposition, comme dans le cas du nom de fichier, tandis que Chrome donne la priorité à l'attribut de téléchargement.

Source

HTTP-Header Content-Disposition

35
Emanuel Vintilă

En lisant les commentaires, j'ai eu le même problème que @ buffer-overflow et j'ai trouvé cela dans le problème:

Je suppose que la page Web et le téléchargement sont d'origines différentes. Nous n'honorons plus l'attribut de téléchargement suggéré comme nom de fichier pour les demandes croisées d'origine. Cliquer sur le lien lance toujours un téléchargement. Mais le nom de fichier est uniquement dérivé de facteurs dépendant uniquement du serveur (par exemple, en-tête Content-Disposition dans la réponse et l'URL).

Donc, je n'ai aucune chance de le faire fonctionner ... :(

42
Augustin Riedinger

J'ai une solution simple concernant ce problème. Il vous suffit de placer votre fichier html sur un serveur comme Apache à l'aide du contrôle xampp et ainsi de suite. Parce que l'attribut de téléchargement fonctionne correctement via un serveur.

<a download href="data:application/octet-stream;base64,PD94ANDSOON">Download Me</a>

Cela peut être résolu en ajoutant target="_blank" attribut au href.

Comme ça:

Save sprites.svg as 
<a target="_blank" download="somefilename.svg"
href="https://cdn.sstatic.net/Img/unified/sprites.svg"
>somefilename.svg</a>
0