PDA

View Full Version : [PHP+MySql] - Upload di immagini da internet


RagingBull
06-04-2007, 16:31
ciao a tutti

ho questo problema: ho creato un form che effettua l'upload di dati (tra cui immagini) in una tabella del database.

se scrivo nel campo form un percorso del tipo: c:\directory\immagine.jpg
tutto ok, prende l'immagine ed effettua l'upload.

ma se inserisco un URL del tipo: http://www.sito.com/immagine.jpg
oppure
http://www.sito.com/immagine.php?id=12

nel momento in cui clicco sul pulsante invia per effettuare l'upload questo non parte.

a cosa può essere dovuto il problema?? e per il secondo tipo di URL ci sono controindicazioni per l'invio al database?

anonimizzato
06-04-2007, 19:41
ciao a tutti

ho questo problema: ho creato un form che effettua l'upload di dati (tra cui immagini) in una tabella del database.

se scrivo nel campo form un percorso del tipo: c:\directory\immagine.jpg
tutto ok, prende l'immagine ed effettua l'upload.

ma se inserisco un URL del tipo: http://www.sito.com/immagine.jpg
oppure
http://www.sito.com/immagine.php?id=12

nel momento in cui clicco sul pulsante invia per effettuare l'upload questo non parte.

a cosa può essere dovuto il problema?? e per il secondo tipo di URL ci sono controindicazioni per l'invio al database?

L'upload lo puoi fare solo con file che sono sul tuo filesystem, non puoi fare l'upload di file in remoto, dovresti prima scaricare l'immagine sul tuo pc e poi caricarla.

Ciao

RagingBull
06-04-2007, 23:57
non è nemmeno possibile prelevare i dati dell'immagine dal database e tramite un algoritmo creare un file temporaneo sul computer da usare in tutta tranquillità?
mi spiego meglio:

nella tabella del db ho il dato in formato binario dell'immagine, il tipo di immagine,e le sue dimensioni (largezza e altezza in pixel)

usando queste informazioni nn si può creare un file temporaneo (ad esempio jpeg) sul computer e recuperarne il percorso fisico (c:\immagine.jpg) per inserirlo nuovamente nel campo appropriato del form?

spero di essere stato nell'esprimermi....sarà l'orario ma nn so come dirlo in altro modo :p

anonimizzato
07-04-2007, 11:10
non è nemmeno possibile prelevare i dati dell'immagine dal database e tramite un algoritmo creare un file temporaneo sul computer da usare in tutta tranquillità?
mi spiego meglio:

nella tabella del db ho il dato in formato binario dell'immagine, il tipo di immagine,e le sue dimensioni (largezza e altezza in pixel)

usando queste informazioni nn si può creare un file temporaneo (ad esempio jpeg) sul computer e recuperarne il percorso fisico (c:\immagine.jpg) per inserirlo nuovamente nel campo appropriato del form?

spero di essere stato nell'esprimermi....sarà l'orario ma nn so come dirlo in altro modo :p

Aspetta aspetta perchè la cosa si fa intricata :D

Ho una mezza idea su cosa tu voglia fare e perchè ma vorrei un tuo chiarimento prima di dire cazzate.

Spiegami meglio cosa avresti bisogno di fare con questo sistema, non tanto quello che hai appena detto ma del tipo:

"Io gestisco un sito con un DB e vorrei che gli utenti possano uploadare delle immagini che ... bla bla bla"

:)

RagingBull
07-04-2007, 13:23
praticamente sto creando il sito per una agenzia immobiliare in cui vengono inserite le schede degli immobili in vendita/affitto.

tra i dati degli immobili ci sono 3 foto che sono inserite in campi di tipo blob. per ogni foto salvo anche le dimensioni e il tipo di immagine (jpeg nel mio caso).

fin qui tutto ok....lato utente le schede e le relative immagini si vedono correttamente.

il problema mio è nel pannello di controllo.

finchè c'è da creare una nuova scheda tutto ok...inserisco i dati, prendo le foto dal computer e tutto fila liscio.

ma quando vado a prelevare i dati per inserirli nel form della pagina "modifica scheda" non posso mettere ovviamente il dato binario dell'immagine. devo necessariamente creare temporaneamente una immagine sul mio pc e metterla in automatico nel campo del form con il percorso esatto (esempio C:\directory\immagine.jpg).

tutto qui. spero di essere stato più chiaro....ma purtroppo l'ultimo punto è piuttosto incasinato. in sintesi per ogni immagine bisogna:

1) prelevare le informazioni dal database (binario, tipo, width, height)
2) creare con queste informazioni un file temporaneo di tipo jpg
3) salvare il file temporaneamente sul computer locale
4) recuperare il percorso del file sul computer (C:\directory\immagine.jpg)
5) inserirlo nel campo del form di modifica

bel casino vero? :D

anonimizzato
07-04-2007, 16:39
Secondo me ti stai incasinando per niente.

Il fatto è che tu vuoi recuperare per forza l'immagine nel pannello di modifica come per gli altri dati (immagino testuali) quando ti basta fare una semplice preview dell'immagine attuale circa la scheda selezionata e fare in modo che se l'utente carica una nuova immagine questa sovrascriva quella attualmente presente.

Inoltre aggiungi magari anche un checkbox per indicare se durante la modifica della scheda vuoi che l'immagine venga proprio rimossa (nel caso ovviamente questo sia ammissibile).

Non ti sembra meglio?

P.S.
Per una questione di praticità sarebbe anche più conveniente memorizzare le immagini in una directory del server e non come dati binari all'interno di del DB, a meno di non avere stringenti problemi di sicurezza.
All'interno del DB metti solo il path stesso dell'immagine e non metti nemmeno le dimensioni visto che è un dato inutile che archivi.
PHP può leggere benissimo le dimensioni del file tramite la funzione get_image_size()

Ciao. ;)

RagingBull
08-04-2007, 22:45
si, per ora ho adottato questa soluzione. pazienza vorrà dire ke spiegherò al tizio il problema...tanto di funzionare funziona lo stesso.

grazie per la consulenza...se mai dovessi riuscire a creare una cosa così intorcinata posterò un tutorial sul forum ;)

anonimizzato
09-04-2007, 12:09
si, per ora ho adottato questa soluzione. pazienza vorrà dire ke spiegherò al tizio il problema...tanto di funzionare funziona lo stesso.

grazie per la consulenza...se mai dovessi riuscire a creare una cosa così intorcinata posterò un tutorial sul forum ;)

Di niente ;)

Comunque guarda che non si può parlare di problema vero e proprio, se ci pensi bene quello che avresti voluto fare è una cosa poco sensata per diversi motivi.

1) Fattibilità
2) Praticità
3) Ottimizzazione (Ad OGNI modifica ci sarebbe stato un nuovo upload di immagine anche se fosse stata la stessa, con evidenti consumi di risorse.)

Te lo dico per esperienza visto che le faccio per lavoro ste cose.