|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Apache Commons FileUpload JAVA
Ciao a tutti, da qualche giorno sorge un problemino che non riesco a risolvere, vi spiego sperando che qualcuno mi dia una mano
Ho creato una servlet che sfruttano le apache commons mi permette di uploadare file e caricare il nome del file sul database, poi tramite una pagina jsp visualizzo le foto che vengono caricate. Il problema è che quando effettuo l'upload e visualizzo le foto la foto inserita non si vede, ma compare null al posto della foto, se faccio il refresh sulla cartella dove vengono caricare le foto come per magia lo slide la vede e tutto funziona regolare! Qualcuno di voi conosce qualche metodo per fare aggiornare automaticamente questa cartella alla servlet? O qualche metodo .flush che mi permetta di aggiornare qualcosa? o devo fare il .close() di qualcosa? Bho sto impazzendo, spero che qualcuno sappia e voglia darmi una mano... |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
come visualizzi la foto?
A intuito, non sapendo bene come fai, direi che il problema è più dello slide che dell'upload! |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Grazie per la tua risposta Lancill, cerco di essere chiaro ma non è facile: dunque io clicco su "visualizza album" questo fa il submit forzato su una pagina jsp normalissima in cui ho soltanto un pulsante "getalbum" e un campo nascosto in cui memorizzo il codice utente che sta effettuando la richiesta, quindi questa pagina "jsp normalissima" chiama la servlet Getalbum passandogli il codice utente che ha fatto la richiesta, questa servlet a sua volta fa la query al db prende nomedell'album (e la prima foto legata a questo) didascalia e data e li manda a slideralbum.jsp questo non fa altro che prendere i dati che arrivano dalla servlet che saranno ovviamente campi Vector e tramite un for li alloco in un vettore javascript, successivamente prendo la dimensione del vector (me lo passa sempre la servlet) e con un altro for stampo il vettore appena fatto in javascript che mi stamperà il nome degli album con la prima foto, data e descrizione. Quando clicco sull'album questo mi rimanda ad una pagina praticamente vuota con submit forzato, questa contiene soltanto il codice album in un campo nascosto e il pulsante da forzare ovviamente, quando viene forzato il submit su questa pagina vengo riportato sulla servlet Getimage, questa funziona come Getalbum sopra citata, prende tutti le foto associate a quell'album e mi rimanda su slider.jsp, qui di nuovo alloco il vettore prendendo i dati dai vector della servlet e ricorsivamente li stampo:
Codice:
immagine.innerHTML="<img border=0 src=/imagesharing/images/"+url[counter]+"><br><br>"+data[counter]+" "+didascalia[counter]; Spero di essere stato chiaro |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
beh, a parte qualche passaggio "contorto" che fai, ma forse perché non conosco alcuni dettagli delle tue esigenze, direi che il problema potrebbe essere semplicemente di caching.
Prova ad inserire i meta-tag per disabilitare il caching automatico: Codice HTML:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> p.s.: ma per refresh sulla cartella intendi proprio quello fatto tramite sistema operativo sul file system? |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Niente come immaginavo il problema persiste... non avevo inserito il metatag ma avevo provato più volte a cancellare la cache, sta cosa è incredibile.
Quote:
|
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
ah ma tu esegui il tutto da eclipse?
Eclipse Indigo o precedente? Prova a far girare tutto fuori da Eclipse. Io con le versioni fino ad Indigo avevo un sacco di problemi di refresh perché Eclipse si crea una sua cache per far girare il progetto internamente. Ti consiglio di aggiornare a Juno, decisamente migliore e non mi da più i problemi di refresh! |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Si eseguo da eclipse, ma in verità l'altro ieri ho provato ad eseguirlo direttamente da Tomcat che ho installato e avevo lo stesso problema, però non ricordo se avevo cancellato la cache del browser dal momento che ho fatto un milione di prove fin ora... più tardi provo e vediamo. Comunque di eclipse uso Indigo proverò ad aggiornare la versione... non so perchè tutti utilizzino eclipse ma io lo odio. Netbeans tutta la vita, peccato che possiede qualcosa in meno di eclipse...
Grazie infinite per il tuo aiuto Ps: complimenti per il blog |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
Ok, fammi sapere se era quello il problema!
Eclipse sono gioie e dolori, io ci programmo da una vita e devo dire che configurato secondo le proprie esigenze è veramente ottimo. Grazie per i complimenti sul blog, gentilissimo!
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Niente purtroppo anche provando direttamente su tomcat il problema persiste quindi mi sembra inutile cambiare eclipse... dovrei andare a riconfigurare tutto... sto problema mi sta facendo impazzire
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
quindi hai provato senza passare da eclipse (quindi con eclipse chiuso)?
In questo caso hai dovuto fare il refresh sulla cartella immagini del tuo progetto nella webapps di tomcat? Se è così, non resta che l'ipotesi di un flusso che rimane aperto sull'immagine un po' troppo o non viene chiuso. Però senza vedere codice è un po' dura
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Si si, il refresh non l'ho fatto ma in teoria i mac dovrebbero farlo in automatico... almeno in teoria!
Non è un problema, se hai voglia e tempo mi dici quali file ti servono e li posto |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
beh a occhio direi Upload e GetImage... ma nella pratica i pezzi di codice che hanno a che fare con l'immagine incriminata
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Credo possano bastare questi:
http://pastebin.com/P5GYMrTz <-- UPLOAD http://pastebin.com/M5qsDCUB <-- GETIMAGE http://pastebin.com/mLjKe6uk <-- SLIDER grazie |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
Ciao, scusa il ritardo, solo oggi ho avuto 10 minuti per guardare il codice...
non ho controllato attentamente, ma a occhio mi sembra che non chiudi il file dopo averlo scritto nella servlet Upload... mi è sfuggito qualcosa? |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
No, non ti è sfuggito niente, anche io ho avuto questo dubbio... ma leggendo la documentazione (correggimi se sbaglio) mi è sembrato di capire che per i File non ho bisogno di chiudere, non è uno stream...
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
si infatti mi sono espresso male, intendevo di chiudere lo stream per la scrittura del file... ma credo che non c'è un metodo esplicito nella libreria di Apache che utilizzi.
Io ti suggerisco di fare una prova salvando il file "manualmente" e non con il metodo write(); Prova come fanno qua: http://www.jedi.be/blog/2009/04/10/j...he-fileupload/ |
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Grazie mille, questa sera provo e ti aggiorno
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Ovviamente non sono sparito, sto rifacendo la servlet, ho scoperto che con le servlet3 non ho bisogno di apache commons
Appena ho 10 min di poter finire di sistemare e testare ti aggiorno, ieri ho fatto una bozza veloce, comunque se funziona significa che il problema con apache commons era quello... si deve usare lo stream per forza, servlet3 utilizzano lo stream. |
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 165
|
Rieccomi, sono stato un po indaffarato. Comunque il problema non si risolve neanche con le servlet3 e quindi con streaming, stesso identico problema di aggiornamento.
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Aug 2001
Città: Avalon
Messaggi: 175
|
ma debuggando non sei riuscito a notare nessun valore imprevisto?
A questo punto direi che l'unico modo per svelare il mistero è proprio vedere step by step che cosa sta succedendo. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:42.


















