Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zmiana nazwy pliku po uploadzie
piotrpajor
post 7.08.2008, 23:51:34
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.08.2008

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


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.
Go to the top of the page
+Quote Post
redelek
post 8.08.2008, 07:31:27
Post #2





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


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

Ten post edytował redelek 8.08.2008, 07:36:04


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrpajor
post 8.08.2008, 10:48:31
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.08.2008

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


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 ?
Go to the top of the page
+Quote Post
redelek
post 8.08.2008, 11:02:00
Post #4





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


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


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 05:26