Newsgroup: it.comp.java
Titolo: copiare file da server a client

ho la necessità di copiare un file dal mio server al mio client, in
questo modo.
Io lancio la mia pagina jsp che al submit lancia una classe java che fa
determinate cose.
Ora io dovrei prendere un file dal server e copiarlo in una mia cartella
sul client. Come fare? C'è qualche esempio in giro?
Grazie a tutti.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie a tutti.
Il tuo problema e' piuttosto comune e non presenta particolari
difficolta', ma bisogna prestare attenzione ad alcuni particolari...
Non hai fornito abbastanza dettagli: il contenuto del file
"lato server" viene generato "al volo" in base ai parametri
delle richiesta dei client?
Ciao
Roberto

beh, il server di sua iniziativa 'ovviamente' non puo' andare a
ficcarti un suo file sul file system del tuo client.
E' il tuo client che deve prendersi l'iniziativa di dire al server
'dammi il file che me lo salvo'
Allora, o metti un bel link nella pagina di risposta così che l'utente
ci clicca sopra e fa 'salva'
Oppure cambi il content-type della risposta e restituisci direttamente
il file generato al posto di una pagina html.
Oppure ti crei un worm che sfruttando una delle vulnerabilita' del o.s.
client e cosi' puoi farci quello che vuoi... (ovviamente sto facendo
dell'ironia...)

 wrote in message
news:dkuvmj$t6c$
1...@area.cu.mi.it



 ne accorgesse.
Questo non e' possibile, a meno di utilizzare una applet firmata
che vada a controllare la presenza dei file sul server e li
scarichi automaticamente in locale sul client...pero' se l'utente
chiude il browser...Come mai questa "segretezza"?
Io per risolvere problemi analoghi al tuo mi sono fatto una piccola
libreria di classi che utilizzo per invocare da web elaborazioni
batch (che rimangono attive come thread separati sul server anche se
l'utente fa un logout dall'applicazione e/o chiude il browser) e possono
generare uno o piu' contenuti scaricabili.
L'utente ha la possibilita' di tenere sotto controllo lo stato
di avanzamento delle elaborazioni che ha avviato ed al loro completamento
il sistema mette a disposizione i link per scaricare gli eventuali risultati.
Piu' difficile a dirsi che a farsi...
Bisogna solo stare attenti ad alcune cosette:
1) non cadere nella tentazione di lanciare le elaborazioni e mantenere
    il client in attesa fino al loro termine: tranne nei casi piu' banali,
    questo puo' portare ad un timeout della connessione con conseguente
    perdita del/dei risultato/i.
    Ergo: usare elaborazioni batch che vengono avviate e che producono
    risultati "in differita"!
2) sullo stream di output associato alle HttpServletResponse che
    "scaricano" i dati dei risultati al client, e' *necessario* impostare
    il MIME type corrispondente ai contenuti (nel tuo caso text/plain)
3) predisporre dei link per lo scaricamento dei contenuti che facciano
    "vedere" al browser le estensioni di file giuste.
    Mi spiego con un esempio...
    Se vuoi generare file in formato Excel e vuoi anche che i browser
    siano in grado di "suggerire" la corretta "helper application" agli utenti,
    non e' in generale sufficiente il solo MIME type impostato sullo stream
    prodotto dalla servlet, ma e' *anche* necessario che il browser "veda"
    che la richiesta sia stata fatta verso un URL nel quale compare un nome di
    file con estensione associata (localmente) ad una "helper application".
    Supponiamo che tu abbia realizzato la servlet che rimane in attesa delle
    richieste di accesso ai file prodotti dalle elaborazioni: nel file web.xml
    dovresti scrivere qualcosa di simile a questo
    [...]
    <servlet>
      <servlet-name>results_download</servlet-name>
      <servlet-class>...</servlet-class>
      ...
    </servlet>
    ...
    <servlet-mapping>
      <servlet-name>reports_download</servlet-name>
      <url-pattern>/downloads/*</url-pattern>
    </servlet-mapping>
    [...]
    e con questa configurazione, una qualsiasi richiesta del tipo:
 
http://tuo.host/.../downloads/nome_file.xls
    verrebbe "servita" dalla servlet di cui sopra
    (al posto dei "..." ci va ovviamente l'application context corretto!)
    Chi genera questi URL? Ovviamente la tua applicazione, sulla base dei
    risultati messi a disposizione dalle elaborazioni avviate dagli utenti.
    Nota anche che puoi benissimo passare anche una query string, cioe'
    e' perfettamente lecito scrivere:
 
http://tuo.host/.../downloads/nome_file.xls?prm1=val1&prm2=val2
    Quando il browser accede ad un URL fatto in questo modo e si vede
    ritornare un contenuto che non puo' visualizzare direttamente,
    suggerisce la "helper application" che, in base alla configurazione
    locale, "mappa" meglio l'accoppiata MIME type-estensione.
    L'utente puo' cosi' decidere se visualizzare direttamente il
    contenuto, oppure se memorizzarlo sul proprio disco, nel qual caso si
    vedra' proporre, come nome del file da salvare, proprio quello
    indicato nell'URL!
Ciao
Roberto