|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 326
|
[Java] Invio di una foto
Salve,
sto sviluppando una midlet in J2ME che scatta una foto e la invia ad uno script php. Vi illustro il procedimento logico: - scatto la foto - la foto una volta scattata viene memorizzata in formato binario (in un array di byte) -codifico l'array di byte in stringa usando l'algoritmo Base64 (lo faccio x evitare perdita di informazione durante l'invio)...l'algoritmo mi ritorna una stringa -a questo punto tramite una http connection invio la stringa allo script tramite una richiesta di tipo post (di tipo get è uguale?) -lo script fa una request della stringa, la decodifica e la scrive all'interno di un file binario Il ragionamento è giusto?? Che ne dite?? O si può fare anche in un altro modo? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Secondo me non ha senso la codifica in base64, non aggiunge sicurezza.
In ogni caso se il trasferimento avviene tramite http get o post le informazioni viaggiano tramite TCP. Quindi il TCP garantisce che lo stream sia stato trasmesso in maniera corretta. Per il GET mi sembra che ci sia un limite sulla lunghezza, ma sinceramente non mi ricordo. Va bene POST. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 326
|
[PHP]Creare immagine da file binario
Ho uno script php in cui viene passata una stringa che rappresenta un'immagine codificata in base64.
Lo script decodifica la stringa, crea un file .jpeg e ci scrive la decodifica! E in teoria dovrebbe aver creato un foto con l'immagine...giusto??? E invece è vuoto!!!!!!!! Come mai? Ecco il codice $foto = $_POST['foto']; $a = base64_decode($foto); $f = fopen("foto/prova.jpeg", "wb"); fwrite($f, $a); fclose($f);
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Mar 2007
Messaggi: 298
|
Quote:
Tieni di conto che GET e POST hanno modi diversi di passare i parametri, la POST è fatta per fare una submit di dati in un form. Possibilmente stai mandando una POST con i dati in stile GET? Non so che libreria stai usando per fare la POST, se usi HttpConnection, tieni di conto che devi costruire la richiesta completamente, includendo il content-length. Se fai una post non puoi passare i dati nella url, ma devi settare il content-length e passare l'immagine nel corpo della richiesta. Come dice cionci, la GET può avere limiti di lunghezza quindi è sconsigliata per trasportare grosse quantità di dati. Ecco un esempio di una GET, come vedi, c'è solo l'header della request, non c'è body: Codice:
GET /index.html?userid=joe&password=guessme HTTP/1.1 Host: www.mysite.com User-Agent: Mozilla/4.0 Codice:
POST /login.jsp HTTP/1.1 Host: www.mysite.com User-Agent: Mozilla/4.0 Content-Length: 27 Content-Type: application/x-www-form-urlencoded userid=joe&password=guessme Codice:
// Ottieni la foto
byte[] foto = ...;
// Converti a base64 con un encoder a tua scelta.
byte[] base64 = base64encode(foto);
// Converti il base64 in stringa URL Encoded con un encoder a tua scelta.
byte[] urlencoded = URLencode(base64);
// Ottieni la connessione.
HttpConnection conn = ...;
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// Setta la lunghezza della request
// content-length = lunghezza-nome-parametro + lunghezza-foto-encodata
conn.setRequestProperty("Content-Length", urlencoded.length + 5);
OutputStream os = conn.getOutputStream();
// Scrivi il nome del parametro
os.write("foto=".getBytes());
// Ora scrivi la foto encodata
os.write(urlencoded);
// Ora puoi inviare la richiesta.
....
Ultima modifica di incipit1970 : 03-10-2008 alle 16:35. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:09.




















