View Full Version : Applet e upload immagine a server
Emiliano^^
25-08-2006, 14:11
Ciao a tutti
Premetto che è da poco che lavoro in Java e son tre giorni che non riesco a cavarne piede su un problema.
Allora: vorrei creare un'applet che, una volta caricata dinamicamente un immagine dal disco tramite il pulsante sfoglia(tag <input type=file) e una volta visualizzata tale immagine in un tag image usando seplicemente il javascript, possa, tramite l'applet, effettuare alcune trasformazioni su di essa e poi(e questo che in particoalre mi interessa saper fare) poterla inviare ad una pagina php sul server per essere poi archiviata.
Spero di essermi spiegato bene.
In poche parole come posso fare l'upload di in oggetto immagine visualizzato nella pagina non inviando il file immagine caricato e ne modificando tale file originale ma inviando il risultato delle operazioni su di essa . Devo in qualche modo usare i socket?
Mi potreste dare un aiutino?
:-)
Allora: vorrei creare un'applet che, una volta caricata dinamicamente un immagine dal disco tramite il pulsante sfoglia(tag <input type=file) e una volta visualizzata tale immagine in un tag image usando seplicemente il javascript, possa, tramite l'applet, effettuare alcune trasformazioni su di essa e poi(e questo che in particoalre mi interessa saper fare) poterla inviare ad una pagina php sul server per essere poi archiviata.
Una applet Java, se non è firmata digitalmente, non ha alcun accesso al file-system locale, non puoi quindi leggere/scrivere sui file locali.
Il tag <input> con tipo "file" serve per selezionare un file, ma in genere lo si usa all'interno di un <form> per fare l'upload tramite "POST" del file verso un URL che fa riferimento ad uno script in un qualche linguaggio server-side.
Amesso di firmare digitalmente l'applet, non sarebbe nemmeno necessario mettere un tag <input> per il file. Con Java puoi usare la classe JFileChooser per selezionare un file e poi lo apri con le classi per l'I/O.
Emiliano^^
25-08-2006, 14:49
Ciao Andbin, ti ringrazio per essere intervenuto.
Cerco di chiarire le mie intenzioni :-)
intendo usare il pulsante sfoglia in quanto con questo non incappo nelle restrizioni di accesso al file system (non so se lo stesso vale per JFileChooser).
Ora quello che voglio capire è che una volta che con sfoglia trovo la path del file immagine, potrei dinamicamente (con javascript o suppongo anche con java) visualizzare un anteprima di essa su un box della stessa pagina web. Sempre con una applet posso effettuare modifiche(trasformazioni ad esempio resize) on fly alla stessa immagine visualizzando istantaneamente il risultato.Tutto questo penso si possa fare...correggetemi se sbaglio. Ora mi chiedo se possa uploudare verso un server remoto quest'immagine visualizzata nel box tramite qualche metodo in java. Insomma fare un trasferimento dati su quest'oggetto presente nella box immagine con le trasformazioni ottenuto fino a quell'istante.
:confused:
intendo usare il pulsante sfoglia in quanto con questo non incappo nelle restrizioni di accesso al file system (non so se lo stesso vale per JFileChooser).Sì, con <input type="file"> non hai problemi a scegliere il file locale (è il browser che visualizza la finestra di sfoglia, ecc...).
Ma se stiamo parlando di Java è un altro conto: se la applet non è firmata allora non puoi usare JFileChooser, non puoi aprire file locali per la lettura/scrittura.
Ora quello che voglio capire è che una volta che con sfoglia trovo la path del file immagine, potrei dinamicamente (con javascript o suppongo anche con java) visualizzare un anteprima di essa su un box della stessa pagina web.Prova questo codice html che ho scritto.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Sfoglia file</title>
<script type="text/javascript">
<!--
function visualizza ()
{
f = document.form1;
document.getElementById("image1").src = "file:///" + f.file1.value;
}
//-->
</script>
</head>
<body>
<form name="form1" action="" method="">
<p>
Sfoglia file
<input name="file1" type="file">
</p>
<p>
<input type="button" value="Visualizza" onclick="visualizza()">
</p>
</form>
<img id="image1" src="">
</body>
</html>Scegli una immagine e poi clicca su Visualizza. Se la pagina html ce l'hai in locale non ci dovrebbero essere problemi. Se invece è su un sito web, il browser potrebbe impedire la visualizzazione della immagine.
Sempre con una applet posso effettuare modifiche(trasformazioni ad esempio resize) on fly alla stessa immagine visualizzando istantaneamente il risultato.Se la applet deve ricevere l'immagine in locale, deve essere firmata.
Ora mi chiedo se possa uploudare verso un server remoto quest'immagine visualizzata nel box tramite qualche metodo in java.Innanzitutto l'immagine dovresti averla dentro la applet Java, non dentro un tag <img>, per intenderci.
Per mandarla da Java sul server, non dovrebbero esserci problemi.
P.S.: la soluzione ottimale comunque è quella di firmare la applet e usare JFileChooser. ;)
Emiliano^^
25-08-2006, 16:26
:-)
Scegli una immagine e poi clicca su Visualizza. Se la pagina html ce l'hai in locale non ci dovrebbero essere problemi. Se invece è su un sito web, il browser potrebbe impedire la visualizzazione della immagine.
Su questo è tutto ok in quanto ho già fatto qualcosa di simile.
Se la applet deve ricevere l'immagine in locale, deve essere firmata.
.
Questo perchè viene letta direttamente da un file tramite JFileChooser? Pensavo ci fosse qualche metodo per poterla leggere in qualche modo dal tag image e poterla portare dentro l'applet. Sicuro che non si può fare? :mc:
Per mandarla da Java sul server, non dovrebbero esserci problemi.
Su questo direi che c'è il buio più totale... :wtf: Potresti indicarmi quali metodi usare oppure un qualche tutorial o guida o script simile? :help:
P.S.: la soluzione ottimale comunque è quella di firmare la applet e usare JFileChooser. ;)
Osserva questo (link (http://www.izhuk.com/imaging/) ) tool che ho trovato; diciamo che è quasi quello che voglio ottenere. Tuttavia quando carico l'immagine devo poi uploudarla(quello che non vorrei fare io) sul server per poi ricaricare la nuova pagina on l'applet di gestione della stessa immagine. Inoltre quando si clicca per salvarla viene caricata una nuova pagina con nuova immagine modificata... quindi suppongo che l'applet invii l'immagine nel server e qualche script server side generi la pagina con l'immagine in un tag image...
Ah dimenticavo...grazie per la tua disponibilità
Questo perchè viene letta direttamente da un file tramite JFileChooser? Pensavo ci fosse qualche metodo per poterla leggere in qualche modo dal tag image e poterla portare dentro l'applet. Sicuro che non si può fare? :mc: La questione è molto semplice: finché si tratta di avere il nome del file locale, non ci sono grossi problemi. Usando il tag <input type="file"> puoi ottenerlo. Passare questo nome di file alla applet Java è sicuramente anche possibile. Ma se la applet non è firmata, non puoi leggere il file comunque!
Su questo direi che c'è il buio più totale... :wtf: Potresti indicarmi quali metodi usare oppure un qualche tutorial o guida o script simile? :help: Anche qui la questione è la seguente: per poter manipolare da Java una immagine, devi usare le classi di Java per la gestione delle immagini (es. Image, BufferedImage, ecc....). Per mandare l'immagine sul server, il modo più semplice è fare un POST con il protocollo HTTP. L'immagine però deve essere in formato noto: gif, png, ecc...
Inoltre devi usare il protocollo HTTP e Java è un po' carente su questo punto.
Per il protocollo HTTP puoi usare delle librerie di terze parti: esempio la HttpClient del progetto Apache Jakarta, vedi <qui> (http://jakarta.apache.org/commons/httpclient/).
Per il resto, dovresti fare qualche ricerca.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.