Sunteți pe pagina 1din 5

Trimiterea de fisiere de la utilizator catre server si stocarea acestora in baza de date

PHP este capabil sa primeasca fisiere de la utilizator prin intermediul browserului, folosind un formular. Astfel pot fi preluate fisiere de tip text sau binary (imagini, arhive, etc..). EX : <form enctype="multipart/form-data" action="fisier.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="1000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> Campul MAX_FILE_SIZE trebuie situat inainte de input type= file si reprezinta dimensiunea maxima a fisierului acceptat (masurat in octeti). Daca register_globals este on in php.ini , atunci puteti folosi urmatoarele variablie, dupa submitare : $userfile fisierul temporar creat pe server $userfile_name numele original al fisierului trimis $userfile_type tipul fisierului trimis $userfile_size marimea fisierului trimis Daca register_globals este off atunci apelati vectorul : $HTTP_POST_FILES[userfile][tmp_file] - fisierul temporar creat pe server $HTTP_POST_FILES[userfile][name] numele original al fisierului trimis $HTTP_POST_FILES[userfile][type] tipul fisierului trimis $HTTP_POST_FILES[userfile][size] marimea fisierului trimis

42

Pentru stocarea in baza de date se deschide ca read-only fisierul temporar si apoi se scrie in tabela, partea binara in tipul de data BLOB.
<html> <head><title>Store binary data into SQL Database</title></head> <body> <?php if ($submit) { MYSQL_CONNECT("localhost","root","password"); mysql_select_db("binary_data"); $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data))); $result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ". "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$fo rm_data_type')"); $id= mysql_insert_id(); print "<p>This file has the following Database ID: <b>$id</b>"; MYSQL_CLOSE(); } else { ?> <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data"> File Description:<br> <input type="text" name="form_description" size="40"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <br>File to upload/store in database:<br> <input type="file" name="form_data" size="40"> <p><input type="submit" name="submit" value="submit"> </form> <?php } ?> </body> </html>

43

Cum folosim imaginile aflate in baza de date ? Atunci cand afisam produsele din baza de date, daca dorim si vizualizarea unei poze, inseram linia : <img src="getdata.php3?id=3"> Fisierul getdata.php <?php if($id) { MYSQL_CONNECT("localhost","root","password"); mysql_select_db("binary_data"); $query = "select bin_data,filetype from binary_data where id=$id"; $result = MYSQL_QUERY($query); $data = MYSQL_RESULT($result,0,"bin_data"); $type = MYSQL_RESULT($result,0,"filetype"); Header( "Content-type: $type"); echo $data; }; ?> PROCESARE GRAFICA IN PHP Crearea unei imagini, setarea culorilor PHP va poate fi un instrument util in creerea de imagini, daca acesta este compilat cu suport grafic. Pentru Windows, PHP vine precompilat FARA suport grafic. In linux, la compilare se poate alege optiunea with-gd. Pentru Windows exista un patch la http://www.boutell.com/gd/ .

44

Pentru crearea unei imagini se foloseste functia ImageCreate(), ca in exemplul de mai jos : $image=ImageCreate(200,150); Culorile se aloca cu ajutorul functiei ImageColorAllocate(), ce accepta urmatorii parametrii : pointer catre imagine, culoare RED, culoare GREEN, culoare BLUE (nuante de la 0 la 255). $gray=ImageColorAllocate($image,204,204,204); $blue=ImageColorAllocate($image,0,0,255); Coordonatele X si Y pornesc din stanga sus spre dreapta jos.
x

DESEN Liniile se traseaza folosind functia ImageLine(), ce accepta ca argumente pointerul catre imagine, coordonatele x si y de start, coordonatele x si y de final si culoarea. ImageLine($image,10,10,150,30,$blue);

In final se poate salva imaginea : ImageJPEG($image) pentru salvare temporara (catre browser) sau pentru a salva pe disc ImageJPEG($image,imagine.jpg);

45

Cercurile sau elipsele se deseneaza cu cu ajutorul functiei ImageArc(), cu parametrii pointer catre imagine, coordonatele x si y ale centrului, raza pentru latime, raza pentru inaltime, punctele de start si de finish in grade, pornind de la ora 3 in directia ceasului si culoarea. Dreptunghiurile se deseneaza cu ajutorul functiei ImageRectangle(), cu parametrii pointer catre imagine, x stantga sus, y stanga sus, x dreapta jos, y dreapta jos, culoare). Textul (pe care il vom folosi la contorul dinamic web) se scrie cu ajutorul functiei ImageString(pointer,font,x,y,text,culoare), unde font este un intreg intre 1 si 5. Alte fonturi se pot incarca cu ImageLoadFont(). Daca dorim sa scriem pe verticala folosim functia ImageStringUp(). EX : <? Header(Content-type: image/jpeg); $image=ImageCreate(200,150); $gray=ImageColorAllocate ($image,204,204,204); $blue=ImageColorAllocate($image,0,0,255); ImageLine($image,10,10,150,30,$blue); ImageArc($image,150,65,70,70,0,360,$blue); ImageRectangle($image,10,65,150,140,$blue); ImageString($image,1,10,15,Acesta este un text,$gray); ImageJPEG($image); ImageDestroy($image); ?>

46

S-ar putea să vă placă și