Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]upload zdjęcia na serv.:sprawdzanie rozszerzenia,zmiana nazwy,tworzenie miniaturki,wstawianie do bazy danych,polskie znaki
maciejfig
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 8.06.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
-nafta103-
post
Post #2





Goście







<?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 ...";
}
?>
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


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.

Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




$src=ImageCreateFromJpeg($nazwa);
yy....eee......
Dla ImageCreateFromJpeg należy podać ścieżkę do pliku a nie jego nazwę.
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


A jaka jest ścieżka do pliku w moim przypadku, nie rozumię.
Go to the top of the page
+Quote Post
Sobak
post
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 4
Dołączył: 26.04.2011
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


@ 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.
Go to the top of the page
+Quote Post
Sobak
post
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 4
Dołączył: 26.04.2011
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
8_pasazer_NOSTRO...
post
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 18.11.2009
Skąd: Legnica

Ostrzeżenie: (20%)
X----


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. };


Ten post edytował 8_pasazer_NOSTROMO 17.05.2013, 13:08:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 18:16