Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    26

    Salvataggio path di un'immagine in memoria

    Ragazzi ho bisogno di voi... ho un problema nel momento in cui vado a salvare nel database la stringa contenente il datapath di un'immagine... nel momento in cui salvo nel db (mysql) imi scompaiono le "/"... è strano perchè mi succede solo con una delle classi della mia applicazione... comunque... esiste un'istruzione java che faccia in modo che ciò non accada?

    ecco il momento in cui salvo...

    DConnessione.istanza().connetti();
    System.out.println(this.img+" in up di profilo ");

    DConnessione.istanza().eseguiAggiornamento("UPDATE `rubrica`.`profilo` SET `img` = '"+this.img+"'") ;

    Nella stampa di img ho le "/", ma poi nel db si salva senza.

    Suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Cosa fa eseguiAggiornamento()?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Originariamente inviato da Alex'87
    Cosa fa eseguiAggiornamento()?
    Ad intuito, direi che fa sta cosa qua:
    http://forum.html.it/forum/showthrea...35#post7477535

    Però mi pare piuttosto strano... sicuro di non essere in ambiente Windows e che gli slash ( / ) non siano in realtà dei backslash ( \ )? Se così fosse (e sono abbastanza certo che sia questo il caso), allora vanno quotati, perchè il backslash è un carattere speciale.

    L'alternativa è usare un PreparedStatement.

    PS: non esiste un "istruzione Java" che permetta di "non fare" qualcosa... se c'è un comportamento indesiderato è perchè il codice scritto dal programmatore è errato.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    26
    Innanzitutto grazie =)

    Il problema è che la stessa operazione in un'altra classe mi funziona... ho riguardato il codice e non vedo differenze!
    E il path cmq lo prendo dal classico bottone Sfoglia che mi fa selezionare la foto...
    Cmq in realtà chiedevo se esistesse una funzione java che mi lavori sulla stringa in modo che gli slash non spariscano!

    Grazie comunque =)
    Intanto vedo nel link che mi hai dato!

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Originariamente inviato da ariari
    Innanzitutto grazie =)

    Il problema è che la stessa operazione in un'altra classe mi funziona... ho riguardato il codice e non vedo differenze!
    E il path cmq lo prendo dal classico bottone Sfoglia che mi fa selezionare la foto...
    Cmq in realtà chiedevo se esistesse una funzione java che mi lavori sulla stringa in modo che gli slash non spariscano!

    Grazie comunque =)
    Intanto vedo nel link che mi hai dato!
    Ehm... il link era in risposta alla domanda di Alex.
    Come ho già detto, il problema non è il path, ma il modo in cui effettui l'inserimento in DB.

    Se sei in ambiente Windows, il path è composto da caratteri di backslash ( \ ) e non da caratteri di slash ( / ) che sono tipici degli ambienti Unix/Linux. Il backslash è un carattere speciale e all'interno delle istruzioni SQL assume un significato ben preciso. Quindi, o effettui un quote di tutti i backslash oppure utilizzi un PreparedStatement che faccia questo al posto tuo.

    Ripeto, se sei in ambiente Windows (ancora non lo sappiamo, perchè non lo hai specificato da nessuna parte), è sufficiente questa semplice riga di codice:

    codice:
    // Faccio il quote dei backslash del percorso
    String strPath = this.img.replaceAll("\\\\", "\\\\\\\\");
    
    // Inserisco in DB
    DConnessione.istanza().eseguiAggiornamento("UPDATE `rubrica`.`profilo` SET `img` = '"+strPath+"'") ;
    (sì: tutti quegli slash sono necessari).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    26
    Grazie davvero... col replaceAll va... mi fa strano che in altre classi identiche funzioni senza... però grazie mille =)

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Originariamente inviato da ariari
    Grazie davvero... col replaceAll va... mi fa strano che in altre classi identiche funzioni senza... però grazie mille =)
    Non so cosa voglia dire "classi identiche" e cosa voglia dire che "funziona", ma se si tratta di DB, così funziona, altrimenti no...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    26
    Scusami sono stata frettolosa nello scrivere.
    Brevemente ti spiego... sto facendo un'applicazione rubrica con le funzionalità gestione contatti, gestione gruppi, ricerca e profilo personale.. ora il salvataggio nel db delle informazioni di un gruppo, nome, descrizione e foto funziona, nel senso che: sempre selezionando la foto col tasto sfoglia e facendo il salvataggio, nel db il path si salva bene (in realtà si salva con la / e non con \ , però riesco a lavorare con l'immagine), nonostante io non faccia il replaceAll.
    Ora invece stavo lavorando sul profilo personale, e nel momento in cui andavo a salvare nel db mi si salvava in modo errato (e ho fatto classi identiche a quelle per gruppo, in cui ovviamente modificavo solo ciò che serviva, quindi copia e incolla delle prime e poi modificate).

    Comunque grazie mille =)

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Originariamente inviato da ariari
    Scusami sono stata frettolosa nello scrivere.
    Brevemente ti spiego... sto facendo un'applicazione rubrica con le funzionalità gestione contatti, gestione gruppi, ricerca e profilo personale.. ora il salvataggio nel db delle informazioni di un gruppo, nome, descrizione e foto funziona, nel senso che: sempre selezionando la foto col tasto sfoglia e facendo il salvataggio, nel db il path si salva bene (in realtà si salva con la / e non con \ , però riesco a lavorare con l'immagine), nonostante io non faccia il replaceAll.
    Ora invece stavo lavorando sul profilo personale, e nel momento in cui andavo a salvare nel db mi si salvava in modo errato (e ho fatto classi identiche a quelle per gruppo, in cui ovviamente modificavo solo ciò che serviva, quindi copia e incolla delle prime e poi modificate).

    Comunque grazie mille =)
    Questo proprio perchè in un caso c'è lo slash ( / ), nell'altro il backslash ( \ ).

    Probabilmente, nel primo caso l'immagine viene presa da un oggetto URL (come accade per il caricamente di immagini contenute in un JAR tramite getResource(), o prelevate da risorse esterne in rete): il percorso, quindi, non è un percorso fisico di un file su disco, ma un "riferimento" ad una risorsa.

    Nel secondo caso, evidentemente l'immagine è presa da un percorso fisico su disco su sistema Windows, che usa il backslash come separatore di percorso... il backslash però è un carattere speciale e va trattato "coi guanti".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2012
    Messaggi
    26
    Aaaa...capito! Grazie ancora allora! Sei stato prezioso!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.