Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]upload zdjęcia na serv.:sprawdzanie rozszerzenia,zmiana nazwy,tworzenie miniaturki,wstawianie do bazy danych,polskie znaki
Forum PHP.pl > Forum > Przedszkole
maciejfig
Witam,
próbuje zrobic skrypt który po wysłaniu pliku(zdjęcia) wykona następującą prace:
1.sprawdzi rozszerzenie pliku (w przypadku rozszerzenia innego niz graficzne wypluje blad).
2.zmieni nazwe pliku na bardziej przyjazną(w tym pozbawi ją polskich znaków)
3.tworzy miniaturke
4.wstawia do bazy danych link do zdjecia i miniaturki.
Mam 3 skrypty ,ktore wykonuja te zadanie ale nijak nie moge ich ze soba polaczyc. Pomoze ktos albo chociaż naprowadzi?Bede bardzo zobowiazany
  1. <?php
  2. $p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
  3. $p_typ=$_FILES['plik']['type']; // typ pliku
  4. $p_nazwa=$_FILES['plik']['name']; // nazwa pliku
  5. $p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku
  6.  
  7. //wycinamy rozszerzenie z pobieranego pliku
  8. $p_roz= array_pop(explode(".", $p_nazwa));
  9.  
  10. /* odbieramy dane z pola ukrytego i zaokrąglamy je do 3 miejsca
  11.   po przecinku/dzielimy przez 1204*1024 by było w MB*/
  12. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  13.  
  14.  
  15. //zaokrąglamy "round" do 2 miejsc po przecinku i przeliczamy rozmiar pliku na MB
  16. $poj_MB=round(($p_pojemnosc/1048576),2).'MB';
  17.  
  18. //kodujemy nasz plik metodą MD5 i dodajemy date i godzinę oraz rozszerzenie pliku
  19. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  20. $folder="jail/";
  21.  
  22. //---Kolorki HTML---
  23. $k_cze="<font color=#ff0000>";
  24. $f_koniec="</font>";
  25. $k_nieb="<font color=#0000ff>";
  26.  
  27. if ($p_pojemnosc <= 0)
  28. {
  29. echo ("Plik jest pusty nie mogę go przesłać <b>".$k_cze.$p_nazwa." ".$poj_MB.$f_koniec."</b><br />");
  30. echo "<a href=index.php>Wracaj ...</a>";
  31. }
  32.  
  33. if ($poj_MB > $max_size)
  34. {
  35. echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
  36. echo "<a href=index.php>Wracaj ...";
  37. }
  38.  
  39. if (file_exists($folder.$p_nazwa_zm))
  40. {
  41. echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
  42. echo "<a href=index.php>Wracaj ...";
  43. }
  44.  
  45. else {
  46. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  47. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');
  48.  
  49. echo "Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
  50. $path_file=$folder.$p_nazwa_zm;
  51. $conn = mysql_connect('localhost', 'root', 'krasnal') or die('Error connecting to mysql');
  52. mysql_select_db('krasnal');
  53. $zapytanie=mysql_query("insert into nazwa_tabeli values(NULL,'$p_pojemnosc','$path_file','$p_typ')");
  54. echo "<a href=index.php>Wracaj ...";
  55. }
  56. ?>

  1. <?php
  2. $sp = explode(".",$plik_nazwa);
  3. $count_sp = count($sp) - 1;
  4.  
  5. // sprawdzamy rozszerzenie
  6. if($sp[$count_sp] == "gif" or $sp[$count_sp] == "jpg") {
  7. echo "Plik poprawny";
  8. // zamiast tego napisu wstaw kod,
  9. // ktory zapisuje plik na serwer
  10. }
  11. else {
  12. echo "Plik niepoprawny";
  13. }
  14.  
  15. ?>

  1. <?php
  2. $img = imagecreatefromjpeg("jail/photo/normal/gal1/19.jpg");
  3. $width = imagesx($img);
  4. $height = imagesy($img);
  5. $proporcja = $width / $height;
  6. $width_mini = $width * 0.02;
  7. $height_mini = $height * 0.02;
  8.  
  9. if($proporcja>=1.5){
  10. $width_mini = 120;
  11. $height_mini = 120 / $proporcja;
  12. }else{
  13. $width_mini = 80 * $proporcja;
  14. $height_mini = 80;
  15. }
  16.  
  17.  
  18. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  19. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  20.  
  21. imagejpeg($img_mini, "jail/photo/test/19a.jpg", 60);
  22. imagedestroy($img);
  23. imagedestroy($img_mini);
  24. ?>


pozdrawiam
Maciek
nafta103
<?php

include 'config.php';
db_connect();

check_login();

$user_data = get_user_data();

$p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
$p_typ=$_FILES['plik']['type']; // typ pliku
$p_nazwa=$_FILES['plik']['name']; // nazwa pliku
$p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku

//wycinamy rozszerzenie z pobieranego pliku
$p_roz= array_pop(explode(".", $p_nazwa));

/* odbieramy dane z pola ukrytego i zaokrąglamy je do 3 miejsca
po przecinku/dzielimy przez 1204*1024 by było w MB*/
$max_size=round(($_POST['max_file_size']/1048576),3)."MB";


//zaokrąglamy "round" do 2 miejsc po przecinku i przeliczamy rozmiar pliku na MB
$poj_MB=round(($p_pojemnosc/1048576),2).'MB';

//kodujemy nasz plik metodą MD5 i dodajemy date i godzinę oraz rozszerzenie pliku
$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
$folder="pliki/";

//---Kolorki HTML---
$k_cze="<font color=#ff0000>";
$f_koniec="</font>";
$k_nieb="<font color=#0000ff>";


if ($p_pojemnosc <= 0)
{
echo ("Plik jest pusty nie mogę go przesłać <b>".$k_cze.$p_nazwa." ".$poj_MB.$f_koniec."</b><br />");
echo "<a href=index.php>Wracaj ...</a>";
exit;
}

if ($poj_MB > $max_size)
{
echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
echo "<a href=index.php>Wracaj ...";
exit;
}

if (file_exists($folder.$p_nazwa_zm))
{
echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
echo "<a href=index.php>Wracaj ...";
exit;
}

else {
if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');

echo "Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
$path_file=$folder.$p_nazwa_zm;
$conn = mysql_connect('localhost', 'DBNAME', 'BDPASS') or die('Error connecting to mysql');
mysql_select_db('NAZWABAZY');
$zapytanie=mysql_query("UPDATE `users` SET pojemnosc = '$p_pojemnosc', nazwa = '$path_file', typ = '$p_typ' WHERE user_id = '{$user_data['user_id']}'");
echo "<a href=index.php>Wracaj ...";
}
?>
8_pasazer_NOSTROMO
Witam

Podepnę się pod temat, bo mam podobny problem. Ja chciałbym wysłany obraz jpg zmniejszyć do rozmiaru 400x300 i wrzucić do bazy danych ale Chiny nie daje radę. Proszę o pomoc. Oto kod:

Forlumarz :
  1. print"Wysłać można tylko pliki z rozszerzeniem : jpg<br>";
  2. print" <form action='typowania.php' method='POST' ENCTYPE='multipart/form-data' name='wysylka' onsubmit=\"if(document.wysylka.plik.value=='') {alert('Proszę wybrać plik do wysłania!'); return false; };\">";
  3. print"<br>";
  4. print"<input type='hidden' name='status' value='dod_zdjecie_2'>";
  5. print"<input type='file' name='plik' size='50' onchange='submit();'>";
  6. print"</form>";


Plik wykonawczy :
  1. $max_rozmiar = 600000; //w bajtach
  2. if (is_uploaded_file($_FILES['plik']['tmp_name']))
  3. {
  4. $nazwa=''.$_FILES['plik']['name'];//print"$nazwa<br>";
  5. $typ=''.$_FILES['plik']['type'];//print"$nazwa<br>";
  6. $k="Odebrano plik : $nazwa typ : $typ ";
  7. if ($_FILES['plik']['size'] > $max_rozmiar) {$k=$k."Błąd! Plik jest za duży! Musi mieć mniej niż 600Kb";}
  8. elseif ($_FILES['plik']['type']!="image/jpeg") {$k=$k."Błąd! Niezgodny typ pliku ! Dopuszczalne są tylko pliki : jpg";}
  9. else{
  10.  
  11. $src=ImageCreateFromJpeg($nazwa);
  12. list($width,$height)=getimagesize($nazwa);
  13. $wys=400;
  14. $szer=300;
  15. $tmp=imagecreatetruecolor($szer,$wys);
  16. imagecopyresampled($tmp, $src, 0, 0, 0, 0, $szer, $wys,$width,$height);
  17. imagejpeg($tmp, $nazwa,100);
  18.  
  19. $zawplik=file_get_contents($nazwa,true);
  20. $ilzn=strlen($zawplik); //print"<br>ilość znaków w pliku=$ilzn";
  21.  
  22. $nplik=addslashes($zawplik);
  23.  
  24. include "../../../osoby/baza.php";
  25. $zapytanie = "INSERT INTO zdjecia (osoba,tresc,tytul,typ_pliku,dw,kto) values ('$_num','$nplik','$nazwa','$typ','$_kiedy','$_kto') ";
  26. $wykonaj = mysql_query($zapytanie) or die ("wprowadzenie pliku błędne ".mysql_error());
  27. mysql_close($link);
  28. };
  29.  
  30. };


Plik nie zapisuje się w bazie danych. Co jest źle ? Po raz kolejny wzywam Megamocnego nospora. Szefie gdzie jesteś jak Cie trzeba ? Litosci. Ileż ja już za Ciebie zdrowasiek odklepałem w kościele. Szok.

nospor
$src=ImageCreateFromJpeg($nazwa);
yy....eee......
Dla ImageCreateFromJpeg należy podać ścieżkę do pliku a nie jego nazwę.
8_pasazer_NOSTROMO
A jaka jest ścieżka do pliku w moim przypadku, nie rozumię.
Sobak
Klucz tmp_name w tablicy $_FILES albo drugi argument move_uploaded_file();

PS1: Skrypt jest ostro przekombinowany i ogólnie słabo napisany.
PS2: "nie rozumiem"
8_pasazer_NOSTROMO
@ Sobak

A jak napisać to lepiej i szybciej. Efekt ma być jeden. Wszystko co ludzie wrzucą ma być zmniejszane na 400x300. Bo mi jeden gosć wrzucił fotkę 22MB.
Sobak
Nie wiem czy dasz radę znacząco to przyspieszyć. Pewne rzeczy są ciężkie do przeskoczenia i tam już rolę odgrywa maszyna. Mówiąc o kiepskim skrypcie miałem na myśli niespójność nazewnictwa, brak konsekwencji w układaniu kodu, zbędne zmienne, stosowanie cudzysłowów przy prostych ciągach znaków, gdzie lepiej użyć apostrofów i tak dalej
8_pasazer_NOSTROMO
Dzieki, uporałem się. Podaje dla potomków, którzy np. w 2035 tutaj wejdą gotowe rozwiązanie.

  1. $max_rozmiar = 600000; //w bajtach
  2. if (is_uploaded_file($_FILES['plik']['tmp_name']))
  3. {
  4. $nazwa=''.$_FILES['plik']['name'];
  5. $typ=''.$_FILES['plik']['type'];
  6. $k="Odebrano plik : $nazwa typ : $typ ";
  7. if ($_FILES['plik']['size'] > $max_rozmiar) {$k=$k."Błąd! Plik jest za duży! Musi mieć mniej niż 600Kb";}
  8. elseif ($_FILES['plik']['type']!="image/jpeg") {$k=$k."Błąd! Niezgodny typ pliku ! Dopuszczalne są tylko pliki : jpg";}
  9. else{
  10.  
  11. $src=ImageCreateFromJpeg($_FILES['plik']['tmp_name']));
  12. list($width,$height)=getimagesize($nazwa);
  13. $wys=400;
  14. $szer=300;
  15. $tmp=imagecreatetruecolor($szer,$wys);
  16. imagecopyresampled($tmp, $src, 0, 0, 0, 0, $szer, $wys,$width,$height);
  17. imagejpeg($tmp, $nazwa,100);
  18.  
  19. $zawplik=file_get_contents($nazwa,true);
  20. $nplik=addslashes($zawplik);
  21.  
  22. include "../../../osoby/baza.php";
  23. $zapytanie = "INSERT INTO zdjecia (osoba,tresc,tytul,typ_pliku,dw,kto) values ('$_num','$nplik','$nazwa','$typ','$_kiedy','$_kto') ";
  24. $wykonaj = mysql_query($zapytanie) or die ("wprowadzenie pliku błędne ".mysql_error());
  25. mysql_close($link);
  26. };
  27.  
  28. };
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.