2013-07-31 8 views
19
<a href="path/to/file/filename.xxx" download="filename.xxx">filename</a>' 

Quando faccio clic sul collegamento, il mio nomefile.xxx deve essere scaricato.Il file si apre invece di scaricare in Internet Explorer in un collegamento href

Funziona perfettamente in cromo. Ma in Internet Explorer, apre il file invece di scaricarlo. Quale potrebbe essere il problema? C'è qualche proprietà che deve essere aggiunto per farlo funzionare in es.

E inoltre ho bisogno di un esempio di download di file che funzioni per tutti i browser.

+0

quale estensione è? – reyaner

+0

XXX estensione ... – AnaMaria

+1

http://stackoverflow.com/questions/1597732/php-force-file-download-and-ie-yet-again ha già risposto a questa domanda specifica –

risposta

15

L'attributo download non è supportato in IE (vedere http://caniuse.com/#search=download%20attribute).

Ciò suggerisce che l'attributo download è supportato solo da firefox, chrome, opera e l'ultima versione del browser di blackberry.

Per altri browser è necessario utilizzare metodi più tradizionali per forzare il download. Questo è il codice lato server è necessario per impostare un'intestazione Content-Type e Content-Disposition appropriata per indicare (o ingannare a seconda del punto di vista dell'utente) il browser per scaricare l'elemento. Intestazioni dovrebbe essere simile a questo:

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"filename.xxx\" 

(grazie al antyrat per il copia e incolla delle intestazioni)

+0

grazie e potresti aiutarmi con i metodi tradizionali ... –

+0

Aggiunto in una nota ma in pratica significa farlo da server. – Chris

9

Dovrebbe essere fissato sul lato server. Il tuo server dovrebbe restituire queste intestazioni per questo tipo di file:

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"filename.xxx\" 
+0

Questo può essere applicato solo se l'utente ha accesso ai server IIS su cui ha ospitato il suo sito. – AnaMaria

+2

@AnaMaria sì, ma per il resto questo problema non può essere risolto per tutti gli utenti allo stesso tempo ... – antyrat

+1

octet-stream è forse esteso, prova ad impostare l'intestazione corretta: http://www.iana.org/assignments/ media-types/media-types.xhtml – TecHunter

0

Questa deve essere una questione di intestazioni http.

vedere qui: HTTP Headers for File Downloads

il server dovrebbe dire al vostro browser per scaricare il file con l'invio di

Content-Type: application/octet-stream; 
Content-Disposition: attachment; 

nelle intestazioni

+0

Questo può essere applicato solo se l'utente ha accesso ai server IIS su cui ha il suo sito ospitato – AnaMaria

+0

15 caratteri sì! –

-3

Si potrebbe configurare questo nella tua http-Header

httpResponse.setHeader("Content-Type", "application/force-download"); 
     httpResponse.setHeader("Content-Disposition", 
           "attachment;filename=" 
           + "MyFile.pdf"); 
+0

La risposta non fa riferimento alla lingua o alla piattaforma con cui funziona. L'ho provato in JavaScript e httpResponse non è definito. – Sawtaytoes

+0

Quindi defnine esso. È configurato nell'intestazione. Non dipende dal linguaggio http è un protocollo, amico. Ciò non interessa i linguaggi di programmazione o le piattaforme. –

0

Questo non è un problema di codice. E 'il vostro predefinito di IE Opzioni

Per cambiare il "sempre aperta" impostazione:

  1. In Esplora risorse, fare clic sul menu "Strumenti", scegliere "Opzioni cartella"
  2. In la finestra che appare, fare clic sulla scheda "Tipi di file" e scorrere l'elenco fino a trovare l'estensione del file che si desidera modificare (sono in ordine alfabetico). Ad esempio, se Internet Explorer tenta sempre di aprire file .zip, scorrere l'elenco fino a trovare la voce "zip".
  3. Fare clic sul tipo di file, quindi sul pulsante "Avanzate".
  4. Selezionare la casella "Conferma dopo download", quindi fare clic su OK> Chiudi.

EDIT: Se mi chiedete, invece di apportare modifiche nel codice vorrei aggiungere il seguente testo "Utenti di Internet Explorer: per scaricare il file," Rightclick "il legame e ha colpito "Salva destinazione come" per scaricare il file. "

EDIT 2: Questa soluzione funzionerà perfettamente per voi. È una soluzione che ho appena copiato dall'altra risposta. Im non cercando di farlo passare come il mio

Content-Type: application/octet-stream 
Content-Disposition: attachment;filename=\"filename.xxx\" 

Tuttavia è necessario assicurarsi di specificare il tipo di file (s) si consente. Hai menzionato nel tuo post che vuoi questo per qualsiasi tipo di file. Questo sarà un problema.

Per es. Se il tuo sito ha delle immagini e se l'utente finale fa clic su queste immagini, queste verranno scaricate sul suo computer invece di aprirle in una nuova pagina. Ho capito. Quindi è necessario specificare le estensioni di file.

+5

L'OP non può farlo per tutti gli utenti. Questa correzione funziona solo per lui, non per tutte le persone che usano la sua pagina web. – Chris

+1

+1 per la nota di testo con le istruzioni. :) – Chris

+0

Lol.È il testo più comune che vedo quando scarico la mia musica illegale. – AnaMaria

1

Zip il file (.zip) e IE darà all'utente la possibilità di aprire o scaricare il file.

Problemi correlati