Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmiana nazwy pliku po uploadzie
Forum PHP.pl > Forum > Przedszkole
piotrpajor
Witam, mam już skrypt uploadu jednak nie wiem jak napisać to, aby nazwa wysłanego pliku zmieniła swoją nazwę w 100% na jakiś ciąg znaków np. na liczby i druga sprawa już mniej ważna to jak zrobić miniaturki do nowo wysłanego pliku, aby zapisały się na serwerze.

  1. <?php
  2. $parametry = getimagesize ($_FILES['plik']['tmp_name']);
  3. if ($parametry[0] > 1600 || $parametry[1] > 1200) //szerokość i wysokość obrazka w pikselach
  4. {
  5. echo 'Obrazek za duży! Zmniejsz obraz i spróbuj ponownie.<br>';
  6. echo '<a href="www.epll.ugu.pl/upload.html">Wstecz</a>' ;
  7. }
  8. $_FILES['plik']['name'] = str_replace(" ","",$_FILES['plik']['name']);
  9. $uploaddir = 'katalog/';
  10. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$_FILES['plik']['name']))
  11. {
  12. chmod($uploaddir.$_FILES['plik']['name'], 0644);
  13. echo 'Plik został załadowany poprawnie <br><br>';
  14. echo '<img src="katalog/'.$_FILES['plik']['name'].'">';
  15. echo '<br><br>http://www.epll.ugu.pl/katalog/'.$_FILES['plik']['name'].'<br>';
  16. echo '[img]http://www.epll.ugu.pl/strona2/katalog/'.$_FILES['plik']['name'].'[/img]<br>';
  17. }
  18. else
  19. echo 'Błąd podczas uploadowania pliku.';
  20. ?>


Z góry dziękuję za szybką i pomocną odpowiedz.
redelek
Cytat(piotrpajor @ 7.08.2008, 22:51:34 ) *
Witam, mam już skrypt uploadu jednak nie wiem jak napisać to, aby nazwa wysłanego pliku zmieniła swoją nazwę w 100% na jakiś ciąg znaków np. na liczby .


Możesz tak.

  1. <?php
  2. #Zrób sobie zmienną żeby było łatwiej
  3. $p_nazwa = $_FILES['plik']['name'];
  4. #Potem wytnij rozszerzenie z pliku
  5. $p_roz= array_pop(explode(".", $p_nazwa));
  6. # potem zakoduj nazwę pliku metodą md5 i doklejasz rozszerzenie. Jeśli chcesz ko
    dować całe pliki to nie używaj tego
  7. # ale będziesz miał problem z późniejszym ich wyświetleniem, bo nie będą miały ".jpg"
  8. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  9. ?>

i po sprawie. Pliki będą miały różne nazwy i będą ciągiem d24dfr48hsbadw09823ngpolk12bah.jpg.Ten cąg będzie ewnerowany na podstawie
pierwotnej nazwy pliku. Ja tak mam u siebie i działa.

Cytat(piotrpajor @ 7.08.2008, 22:51:34 ) *
i druga sprawa już mniej ważna to jak zrobić miniaturki do nowo wysłanego pliku, aby zapisały się na serwerze

No miniaturka to już większy problem ale nie taki wilk straszny.Pokażę Ci mój przykład i musisz go jakość wpleść w swój upload. Mój skrypt jest wywoływany oddzielnie i robi miniaturki. AAA do poprawnego działania jest wymagane GD2.

  1. <?php
  2. echo "rozpoczynam indexowanie<br />";
  3. $katalog = dir('images/'); // bieżący katalog
  4. while($plik = $katalog->read()){
  5. if (($plik != '.') AND ($plik != '..') AND ($plik !='Thumbs.db')) {
  6.  
  7.  //Przypisujemy do zmiennej $img_path ścieżke do obrazka
  8.  $img_path = "images/$plik";
  9.  //Tworzymy ścieżkę do miniaturki
  10.  $thumb_path = "mini/$plik";
  11. //ustalamy maksymalny dopuszczalny rozmiar miniatury
  12. $max_width=$max_height=100;
  13. //Sprawdzamy czy obraz istnieje
  14. if(!file_exists($img_path))die('<p>Plik obrazu nie istnieje</p>');
  15. //Pobieramy informacjie o obrazie
  16. $img_attr = getimagesize($img_path);
  17.  
  18.  //Sprawdzamy czy obraz jest wiekszy na szerokość czy na wysokość 
  19.  // i zmniejszamy odpowiednio rozmiar
  20.  // $img_attr[0] - szerokosc, $img_attr[1] - wysokość
  21.  if($img_attr[0]>$img_attr[1]){
  22.  $scale = $img_attr[0] / $max_width;
  23.  }else{
  24.  $scale = $img_attr[1] / $max_height;
  25.  }
  26.  
  27.  //Tworzymy obraz miniaturki
  28.  $w = floor($img_attr[0]/$scale);
  29.  $h = floor($img_attr[1]/$scale);
  30.  $thumb = imagecreatetruecolor($w,$h);
  31.  
  32.  //Kopiujemy obraz pomniejszając go,
  33.  imagecopyresampled($thumb, imagecreatefromjpeg($img_path), 0, 0, 0, 0, $w, $h, $img_attr[0], $img_attr[1]);
  34.  
  35.  //Zapisujemy do pliku (jakość 85)
  36.  imagejpeg($thumb,$thumb_path,85);
  37.  
  38.  
  39. }
  40. } 
  41. $katalog->close();
  42.  
  43. ?>


Nie powinieneś mieć problemu i powinno śmigać.
Możesz jeszcze rozbudować skrypt o bazę danych korzystając z mojego ARTYKUŁ

Powodzenia
Redelek
piotrpajor
Dzięki wielkie za szybką odpowiedz jednak po wklejeniu tego skryptu do zmiany nazwy nic się nie dzieje. Teraz mój skrypt wygląda tak :

  1. <?php
  2. $parametry = getimagesize ($_FILES['plik']['tmp_name']);
  3. if ($parametry[0] > 1600 || $parametry[1] > 1200) //szerokość i wysokość obrazka w pikselach
  4. {
  5. echo 'Obrazek za duży! Zmniejsz obraz i spróbuj ponownie.<br>';
  6. echo '<a href="www.epll.ugu.pl">Wstecz</a>' ;
  7. }
  8. $p_nazwa =$uploaddir.$_FILES['plik']['name'];
  9. $p_roz= array_pop(explode(".", $p_nazwa));
  10. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  11. {
  12. $uploaddir = 'katalog/';
  13. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$_FILES['plik']['name']))
  14. chmod($uploaddir.$_FILES['plik']['name'], 0644);
  15. echo 'Plik zostal zaladowany poprawnie <br><br>';
  16. echo '<img src="katalog/'.$_FILES['plik']['name'].'">';
  17. echo '<br><br>http://www.epll.ugu.pl/katalog/'.$_FILES['plik']['name'].'<br>';
  18. echo '[img]http://www.epll.ugu.pl/katalog/'.$_FILES['plik']['name'].'[/img]<br>';
  19. echo '<a href="http://www.epll.ugu.pl">Wstecz</a>';
  20. }
  21. ?>


Czy winą jest złe umiejscowienie tego fragmentu ?
redelek
Cytat(piotrpajor @ 8.08.2008, 09:48:31 ) *
}
$p_nazwa =$uploaddir.$_FILES['plik']['name'];
$p_roz= array_pop(explode(".", $p_nazwa));
$p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
{
$uploaddir = 'katalog/';
if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$_FILES['plik']['name']))
chmod($uploaddir.$_FILES['plik']['name'], 0644);


Nie nie no musisz pozmieniać u siebie. Zobacz, nadal przesyłasz stary plik
  1. <?php
  2. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$_FILES['plik']['name']))
  3. chmod($uploaddir.$_FILES['plik']['name'], 0644);
  4. ?>


zrób tak

  1. <?php
  2. if(move_uploaded_file($_FILES['plik']['tmp_name'], $uploaddir.$p_nazwa_zm))
  3. chmod($uploaddir.$p_nazwa_zm, 0644);
  4. ?>


Wtedy powinno zakukać, Ty w całym skrypcie używasz $_FILES['plik']['name'] można to zapisać do zmiennej i będzie ładniej i przejrzyściej, dla Ciebie
Ja to zrobiłem sobie tak
$nazwa_pliku=$_FILES['plik']['tmp_name']
$plik_tmp=$_FILES['plik']['tmp_name']
nie łatwiej ?

Pozdrawiam
Redelek
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.