Caricare un'immagine - Problemi con gli indirizzi...

giovedì 31 luglio 2008 - 17.38

stuzzo Profilo | Junior Member

Salve a tutti!
Ho un problema con gli indirizzi delle immagini, ho già anche letto post simili, ma non ancora riesco a risolvere.
Per creare un'immagine utilizzo il comando:
System.Drawing.Image imgFotoPrincipale = Bitmap.FromFile(strNomeFileFoto);

Il problema sta nel fatto che Bitmap.FromFile accetta solo string, mentre l'indirizzo della foto è in formato uri, in quanto le foto sono sul server, perciò sono del tipo http://./././NomeFIleFoto.
Utilizzando Server.MapPath non sono riuscito a risolvere ugualmente..

Ringrazio tutti anticipatamente.... :)

19018 Profilo | Expert

Prova a passare l'indirizzo fisico delle foto sul server
es : c:\www\miosito\foto\foto.jpg

e non con http

ciao
Stefano Passatordi

http://blogs.dotnethell.it/stem/

stuzzo Profilo | Junior Member

>Prova a passare l'indirizzo fisico delle foto sul server
>es : c:\www\miosito\foto\foto.jpg
>
>e non con http

Ciao, grazie della risposta.
Il problema è che il mio sito è su un provider, quindi non riesco a passare correttamente tutto il percorso. Ho bisogno di un qualcosa che mi permetta di risalire alla parte iniziale del cammino, ma che restituisca una stringa, in quanto successivamente devo passare una stringa bitmap.fromFIle.

Spero di essermi fatto capire

rossimarko Profilo | Guru

Ciao,

sicuro che Server.MapPath non sia quello che ti serve? http://msdn.microsoft.com/en-us/library/ms524632.aspx
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

balfaz Profilo | Expert

ricorda solo che la sintassi del mappath è

server.mappath("./" stringa root della foto sul server ")

se non funziona mi dispiace... ti manca un pezzo del percorso del file

Buona fortuna è che URL sia con tè

stuzzo Profilo | Junior Member

Ciao a tutti e grazie delle vostre risposte...ma non ancora riesco a risolvere...
Vediamo di chiarire un po' meglio la situazione:

- Come già detto, devo utilizzare il metodo Bitmap.FromFile che accetta solo indirizzi assoluti in formato stringa, perciò tutti i metodi Request.* restituiscono un indirizzo virtuale e mi da errore. Stessa cosa creando un indirizzo con uri indirizzo = new uri().

- La soluzione al mio problema è sicuramente Server.MapPath, ma non riesco a farlo funzionare per un semplice motivo: cioè che le foto che voglio caricare, stanno sì sullo stesso server, ma in una cartella principale diversa, cioè:
io mi trovo qui C:\Inetpub\wwwroot\web\sito\cartella\miofile.aspx
le foto sono qui C:\Inetpub\wwwroot\web\altrosito\public\foto\miofile.jpg
Quindi server MapPath mi restituisce sempre C:\Inetpub\wwwroot\sito\web\public\foto\miofile.jpg <- ma non esiste.....
Io devo risalire fino a wwwroot e cambiare cartella, ecco perchè non riesco...
Ho provato a fare delle "schifezze" del tipo Server.MapPath("../" + PercorsoFoto) oppure Server.MapPath("../../" + PercorsoFoto), ma niente.


rossimarko Profilo | Guru

>Io devo risalire fino a wwwroot e cambiare cartella, ecco perchè
>non riesco...
>Ho provato a fare delle "schifezze" del tipo Server.MapPath("../"
>+ PercorsoFoto) oppure Server.MapPath("../../" + PercorsoFoto),
>ma niente.
>

Se sono due virtual differenti prova a partire dalla root del sito web, ad esempio:
- Server.MapPath("/tuosito/foto")
- Server.MapPath("/altrosito/foto")
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

stuzzo Profilo | Junior Member

>Se sono due virtual differenti prova a partire dalla root del
>sito web, ad esempio:
>- Server.MapPath("/tuosito/foto")
>- Server.MapPath("/altrosito/foto")

Perdonami, ma temo di non aver capito.
Come dovrei fare? Dovrei concatenare i due indirizzi?
Potresti postarmi un esempio?
Grazie
Ciao

rossimarko Profilo | Guru

Se hai due indirizzi del tipo:
- http://www.pippo.it/tuosito/foto/foto1.jpg
- http://www.pippo.it/altrosito/foto/foto2.jpg

per prendere il path fisico puoi farei:
- Server.MapPath("/tuosito/foto/foto1.jpg")
- Server.MapPath("/altrosito/foto/foto2.jpg")

però come vedi sono due virtual application differenti all'interno dello stesso website
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

stuzzo Profilo | Junior Member

>Se hai due indirizzi del tipo:
>- http://www.pippo.it/tuosito/foto/foto1.jpg
>- http://www.pippo.it/altrosito/foto/foto2.jpg
>
>per prendere il path fisico puoi farei:
>- Server.MapPath("/tuosito/foto/foto1.jpg")
>- Server.MapPath("/altrosito/foto/foto2.jpg")
>
>però come vedi sono due virtual application differenti all'interno
>dello stesso website
>-----------------------------------------
>Rossi Marco
>http://blogs.dotnethell.it/rossimarko

Ok, ma io come faccio a passare un unico indirizzo a Bitmap.FromFile? Io devo passare una sola stringa che mi riesca a far salire da dove mi trovo
-> io mi trovo qui C:\Inetpub\wwwroot\web\sito\cartella\miofile.aspx
-> le foto sono qui C:\Inetpub\wwwroot\web\altrosito\public\foto\miofile.jpg
Potesti aiutarmi partendo dagli indirizzi che ti sto indicando io?
Grazie!

rossimarko Profilo | Guru

>Ok, ma io come faccio a passare un unico indirizzo a Bitmap.FromFile?
>Io devo passare una sola stringa che mi riesca a far salire da
>dove mi trovo
>-> io mi trovo qui C:\Inetpub\wwwroot\web\sito\cartella\miofile.aspx
>-> le foto sono qui C:\Inetpub\wwwroot\web\altrosito\public\foto\miofile.jpg
>Potesti aiutarmi partendo dagli indirizzi che ti sto indicando
>io?


Se "sito" e "altrosito" sono due virtual application all'interno dello stesso website suppongo che l'indirizzo http dell'immagine sia una cosa del tipo http://www.pippo.it/altrosito/public/foto/miofile.jpg (mentre la tua pagina è http://www.pippo.it/sito/cartella/miofile.aspx)

Partendo da questo presupposto tu devi passare come parametro alla server.MapPath la stringa "/altrosito/public/foto/miofile.jpg"

Se invece il tuo sito e l'immagine sono in due website diversi (ad esempio la tua pagina è sotto http://www.pluto.net/sito/cartella/miofile.aspx) allora non puoi sfruttare la server.MapPath perchè non accetta un percorso http completo. In questo caso bisogna trovare un'altra soluzione, ma dipende anche dalla funzionalità che devi implementare.

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

stuzzo Profilo | Junior Member

>>Ok, ma io come faccio a passare un unico indirizzo a Bitmap.FromFile?
>>Io devo passare una sola stringa che mi riesca a far salire da
>>dove mi trovo
>>-> io mi trovo qui C:\Inetpub\wwwroot\web\sito\cartella\miofile.aspx
>>-> le foto sono qui C:\Inetpub\wwwroot\web\altrosito\public\foto\miofile.jpg
>>Potesti aiutarmi partendo dagli indirizzi che ti sto indicando
>>io?
>
>
>Se "sito" e "altrosito" sono due virtual application all'interno
>dello stesso website suppongo che l'indirizzo http dell'immagine
>sia una cosa del tipo http://www.pippo.it/altrosito/public/foto/miofile.jpg
>(mentre la tua pagina è http://www.pippo.it/sito/cartella/miofile.aspx)
>
>Partendo da questo presupposto tu devi passare come parametro
>
>Se invece il tuo sito e l'immagine sono in due website diversi
>(ad esempio la tua pagina è sotto http://www.pluto.net/sito/cartella/miofile.aspx)
>allora non puoi sfruttare la server.MapPath perchè non accetta
>un percorso http completo. In questo caso bisogna trovare un'altra
>soluzione, ma dipende anche dalla funzionalità che devi implementare.
>
>-----------------------------------------
>Rossi Marco
>http://blogs.dotnethell.it/rossimarko

Niente, facendo come dici tu

>server.MapPath "/altrosito/public/foto/miofile.jpg"

mi riprende il percorso della foto, ma tronca la parte iniziale, cioè C:\inetpub\wwwroot, mentre il resto va bene

facendo >server.MapPath "../altrosito/public/foto/miofile.jpg", mi sale troppo e scrive una cosa del genere

C:\inetpub\wwwroot\sito\altrosito\public\foto\miofile.jpg.

Uffaaaa :)

rossimarko Profilo | Guru

>mi riprende il percorso della foto, ma tronca la parte iniziale,
>cioè C:\inetpub\wwwroot, mentre il resto va bene
>
>facendo >server.MapPath "../altrosito/public/foto/miofile.jpg",
>mi sale troppo e scrive una cosa del genere
>
>C:\inetpub\wwwroot\sito\altrosito\public\foto\miofile.jpg.
>

Puoi dirmi i path http completi (sia della pagina che del sitoweb) e quelli che ti restituisce la server.mappath ?
Non è che sono due domini diversi?

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

stuzzo Profilo | Junior Member

>>mi riprende il percorso della foto, ma tronca la parte iniziale,
>>cioè C:\inetpub\wwwroot, mentre il resto va bene
>>
>>facendo >server.MapPath "../altrosito/public/foto/miofile.jpg",
>>mi sale troppo e scrive una cosa del genere
>>
>>C:\inetpub\wwwroot\sito\altrosito\public\foto\miofile.jpg.
>>
>
>Puoi dirmi i path http completi (sia della pagina che del sitoweb)
>e quelli che ti restituisce la server.mappath ?
>Non è che sono due domini diversi?
>
>-----------------------------------------
>Rossi Marco
>http://blogs.dotnethell.it/rossimarko

Allora indirizzi
http:\\server\sito\gestione\miapagina.aspx <- dove sono
http:\\server\altrosito\public\foto\miofile.jpg <- dove sta la foto

MapPath("\altrosito\public\foto\miofile.jpg") <- Restituisce \altrosito\public\foto\miofile.jpg
MapPath("../altrosito/public/foto/miofile.jpg) <- Restituisce \server\sito\altrosito\public\foto\miofile.jpg

Come ti ripeto non posso passare indirizzi del tipo http:\\... al Bitmap.FromFile
Spero di averti fatto capire

Ciao e grazie

rossimarko Profilo | Guru

Scusami,

ma Server.MapPath("/altrosito/public/foto/miofile.jpg") dovrebbe ritornari un path fisico, del tipo c:\inetupub\wwwroot\altrosito ecc oppure c:\project\..., ovvero la cartella fisica in cui è stato salvato il file.
non capisco il fatto che ti ritorni \server\sito\altrosito\public\foto\miofile.jpg

Hai già controllato su IIS che sia tutto corretto? Eventualmente mi mandi uno screenshot della struttura su IIS?
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5