Il linguaggio di programmazione PHP
 

Immagini esterne al db

Smith 7 Mag 2017 20:59
Ciao a tutti,
ho la necessità di fare una select all'interno di un database mysql per
estrarre un record e contemporaneamente anche una sua immagine correlata.
Esempio:

SELECT * FROM utenti where nome="ciccio";

come faccio a selezionare la sua foto all'interno di una directory sul
webserver?

Grazie in anticipo per il vostro supporto
Leonardo Serni 7 Mag 2017 21:51
On Sun, 7 May 2017 20:59:02 +0200, Smith <smith@smith.it> wrote:

>Ciao a tutti,
>ho la necessità di fare una select all'interno di un database mysql per
>estrarre un record e contemporaneamente anche una sua immagine correlata.
>Esempio:

>SELECT * FROM utenti where nome="ciccio";

>come faccio a selezionare la sua foto all'interno di una directory sul
>webserver?

Be', bisognerà che qualche informazione sulla foto sia archiviata nella
tabella utenti.

Lo puoi fare esplicitamente, con un campo "foto" contenente il nome del *******
JPEG.

Oppure implicitamente: dài al ******* JPEG di ciccio il nome della primary
key del record di ciccio.

O puoi usare una tabella collegata, se ciccio ha più di una foto.

Altrimenti, spiega cosa intendi per "immagine correlata".

Leonardo
--

A terrible beauty is born.
- W. B. Yeats, Easter 1916
Smith 8 Mag 2017 19:17
On 07/05/2017 21:51, Leonardo Serni wrote:
> ltrimenti, spiega cosa intendi per "immagine correlata".

L'immagine deve fare riferimento al contatto cercato, credo che
inserendola nel db lo "appesantirebbe" troppo.
Hai qualche link da suggerirmi ?
bramante 8 Mag 2017 20:27
Il 07/05/2017 20:59, Smith ha scritto:
> Ciao a tutti,
> ho la necessità di fare una select all'interno di un database mysql per
> estrarre un record e contemporaneamente anche una sua immagine correlata.
> Esempio:
>
> SELECT * FROM utenti where nome="ciccio";
>
> come faccio a selezionare la sua foto all'interno di una directory sul
> webserver?
>
> Grazie in anticipo per il vostro supporto

Di solito nel db si inserisce il riferimento al filesystem

ad esempio
select id, nome, riferimento ******* from utenti where nome = 'ciccio';

riferimento ******* può essere un nome univoco all'interno del filesystem
oppure un path *******
io di solito metto un riferimento ad un nome univoco


uuid_nome ******* esempio
dgs567554ghdgf_ferie_natale.xls *1*

e il path in un ******* xml di configurazione *2*

NB
*1* l'uuid mi serve per non rischiare di sovrascrivere se dovessi
salvare su disco un ******* con lo stesso nome (ferie_natale.xls).

*2*
utilizzo questo metodo in modo che cambiando disco o spostando i ******* su
altro path, devo solo cambiare il puntamento sul ******* XML di
configurazione, oppure averne più di uno


poi successivamente vado a prendere il *******
// prendo il path da un ******* di configurazione
$this->path_allegato = $config['media']['allegati_contatto'];

// prendo il riferimento al ******* dal DB
$dati_allegato =
$this->AllegatoModel->GetAllegatoById($this->attributes['id_allegato']);

** (la tua select * from utenti where nome = 'ciccio')

// controllo se il ******* esiste su filesystem
if ******* exists($this->path_allegato .$dati_allegato[ ******* allegato'])) {
// faccio quel che mi serve come ad esempio il ******* $body = new
Stream($this->path_allegato . $dati_allegato[ ******* allegato']);


return $this->response->withHeader('Content-Type',
'application/octet-stream')
->withHeader('Content-Disposition', 'attachment;
filename=' . $dati_allegato['nome ******* ])
->withHeader('Content-Transfer-Encoding', 'Binary')
->withHeader('Content-Description', ******* Transfer')
->withHeader('Pragma', 'public')
->withHeader('Expires', '0')
->withHeader('Cache-Control', 'must-revalidate')
->withBody($body)
->withHeader('Content-Length', "{$body->getSize()}");

}
else
{
// non esiste il ******* su filesystem
faccio altro
}



Ciao
Leonardo Serni 8 Mag 2017 22:43
On Mon, 8 May 2017 19:17:20 +0200, Smith <smith@smith.it> wrote:

>On 07/05/2017 21:51, Leonardo Serni wrote:
>> ltrimenti, spiega cosa intendi per "immagine correlata".

>L'immagine deve fare riferimento al contatto cercato, credo che
>inserendola nel db lo "appesantirebbe" troppo.
>Hai qualche link da suggerirmi ?

La mia preferenza va a http://tuosito.it/immagini/hash_id_database.jpg

Ovvero quale che sia la chiave primaria dell'utente, l'immagine la salvi come
/immagini/$filename, e $filename è

$filename = sha1($secret . $tuple['PrimaryKeyField']) . '.jpg';

Comunque no, a meno di salvare interi background 1920x1080 un po' di dati nel
formato JPEG in un DB ce li fai stare facile, ed è più comodo per i backup.

Leonardo
--

A terrible beauty is born.
- W. B. Yeats, Easter 1916

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione PHP | Tutti i gruppi | it.comp.www.php | Notizie e discussioni php | Php Mobile | Servizio di consultazione news.