Newsgroup: it.comp.lang.javascript
Titolo: [?] download file

Mettiamo che io ho N files di N estensioni diverse.
Con IE in passato un qualcosa del tipo
<a href="pippo.exe" target="_blank">...</a>
<a href="pippo.doc" target="_blank">...</a>
Nel primo caso apre il classico salva-apri, nel secondo caso se ho una
applicazione che legge i doc apre un nuovo browser.
Oggi ho visto che invece firefox apre SEMPRE un nuovo browser, anche se gli
dici "annulla" o se gli dici "salva", col risultato che rimane poi una
popup aperta e vuota.
Tra l'altro, così a naso, sembrerebbe firefox ad essere più "corretto"
visto che gli sto indicando di aprire comunque una popup.
Ho provato con queste 2 strade (sotto entrambe remmate):
window.onload=function() {
   for(var i=0,objs=document.getElementsByTagName("a");i<objs.length;i++)
    //objs[i].target="_blank";
    //objs[i].onclick=function() {window.open(this.href);return false}
  }
Sia settando il target, sia con il window.open ottengo lo stesso risultato
sopra indicato con firefox.
La domanda è: se ho N file con N estensioni diverse come posso dire
"salva-apri" (questo posso forzarlo server-side), e solo se "apri"
visualizzare una nuova popup? Praticamente il comportamento attuale di
IE6...
Chissà se mi sono spiegato...
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 Chissà se mi sono spiegato...
Nessuno ne ha la minima idea? oppure non mi spiegato per un ciuffolo?
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 Nessuno ne ha la minima idea? oppure non mi spiegato per un ciuffolo?
Io non ne ho la minima idea, mi spiace :)
-- 
Nando [?]
Apostolo della Prova

 IE6...
Visto che non ti serve la compatibilita' a strict la mia idea e' la
seguente:
ti appoggi ad un iframe nascosto e al suo onload: se il browser impone il
download non viene scatenato l'onload dell'iframe, in caso contrario si e
lo riempie tu in questo caso non dovrai fare altro che aprire una pop-up e
metterci lo stesso file che l'utente a quel punto ha gia' in cache:
<script type="text/javascript">
window.onload=function()
{
   for(var i=0,objs=document.getElementsByTagName("a");i<objs.length;i++)
      objs[i].target = "ifr";
}
function open_file()
{
   var ifr_loc = frames['ifr'].window.location;
   if( ifr_loc.href != 'about:blank' )
   {
      window.open( ifr_loc.href, '' );
//    ifr_loc.href = 'about:blank';
   }
}
</script>
<a href="pippo.exe" target="ifr">Clicca</a>
<br />
<a href="pippo.doc" target="ifr">Clicca</a>
<iframe name="ifr" src="about:blank" onload="open_file()"></iframe>
Inutile dire che si puo' migliorare, questo e' fatto piu' o meno al volo...
Ciao

 IE6...
Se non ho capito male stai cercando di fare qualcosa a cui avevo cercato
una soluzione tempo fa...
Avevo bisogno di fare in modo che, facendo click su un link relativo ad
un file (doc, pdf, jpg...) il file collegato venisse scaricato invece
che "interpretato" dal browser (nel caso ne fosse in grado)
L'unica soluzione possibile č quella di "pacioccare" con i MIME type, ma
alla fine avevo preferito zippare tutto a tanti saluti...
How do I force files to download?
You can't do that. The Web protocols were designed to identify, via MIME
Content-Type headers, what sort of content a data stream has, but not
specify exactly what to do with it. This was done for a good reason; the
site author has no way of knowing exactly what sort of system the end
user has, or that user's preferences as to how to deal with different
kinds of data. And some ways of dealing with data, like automatically
running an .exe file, pose security risks such as viruses and "trojan
horses". And if the user has a Macintosh or a Unix system, running DOS
or Windows .EXEs is infeasible, anyway; but if you let the user download
the file, he might be able to put it on a disk and run it on a PC down
the hall.
In general, users may want to make their own choices as to how to deal
with various kinds of files, displaying them in their browser,
displaying them via an external helper application, or saving them to
their hard disk, rather than letting your site force one particular
behavior that might not even work on this particular user's system. So
you should make sure your server sends an honest and accurate
Content-Type header for each item it sends.
If you're sending data files of some sort which the user ought to be
saving instead of viewing in his/her browser, the best MIME type to use
is application/octet-stream; this will usually cause a "save" dialog box
to appear. It's not "forced" (a user can configure the browser to do
something else with this sort of data), but it's the usual action, and
this is the closest you can get to "forcing the browser to save the
file." But you can't force the directory or filename it's saved under,
though browsers will generally get the name out of the last part of the
URL (though they can vary in maddening ways, sometimes winding up with
weird filenames unlike the one you intended).
You can always encourage the user to make use of browser features to
save a file to disk, such as right-clicking in Netscape or MSIE, which
work no matter what MIME type is used or how the browser is configured
to handle that type.
-- 
Mr. Fix @ work

 che "interpretato" dal browser (nel caso ne fosse in grado)
no, questo è abbastanza semplice, basta settare un header generico dal
server...
a me serve che se può essere "interpretato" bon, interpretalo ma in una
nuova pagina, altrimenti scarica.
Che è poi il comportamento di default di IE, come dicevo, mentre firefox
apre sempre una nuova pagina, anche se poi lo scarichi.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 server...
In javascript?
Con php o modificando le impostazioni del server ok, ma via javascript
non sapevo fosse possibile... Un esempio?


 nuova pagina, altrimenti scarica.
Devo supporre che la soluzione che ho proposto, non va bene?!

 In javascript?
"dal server"


 "dal server"
Alla fine come hai risolto?
Nel caso un giorno servisse anche a me...

 Nel caso un giorno servisse anche a me...
non ho risolto, e guardando in giro non ho trovato soluzione (ho trovato
altri siti che hanno questo comportamento: con browser diversi da IE aprono
una finestra vuota con firefox).
Si potrebbe andare a leggere l'estensione, ma è solo statistica come
soluzione (posso vedere estensione pdf e sperare che il client abbia pdf
installato...)



non ti e' congegnale?

 non ti e' congegnale?
non uso frame (xhtml 1.1 strict).
