Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Upload plików na serwer, dodanie kolejnego o podobnej nazwie

03 Cze 2010 16:45 15020 21
  • Poziom 10  
    Siemka

    Jak wiecie mam upload plików i mam z nim problem :D

    Nie wiem jak zrobić aby plik który uploadowywujemy nie zamienił się z innym plikiem :) Czyli chodzi mi oto że dam plik test.txt na server i potem jak chce dać na nowo ten sam plik to chce aby ten plik się nie podmieniał z tym co jest na serwerze.
    Chce po prostu aby 1 plik miał nazwę test.txt a drugi miał nazwę test_1.txt
    Czyli aby skrypt dodawał dodatkową liczbę do pliku który chce uploadować na server bez podmieniania tego samego pliku :D

    Tutaj macie kod skryptu:
    Code:
    <div> 
    
    <form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
    <input name="plik" type="file" />
    <input type="submit" value="Wyślij plik" />
    </form>
    </div>

    <?php
    $plik_tmp = $_FILES['plik']['tmp_name'];
    $plik_nazwa = $_FILES['plik']['name'];
    $plik_rozmiar = $_FILES['plik']['size'];

    $plik_nazwa = strtolower($plik_nazwa);
    $plik_nazwa = str_replace("ż","z",$plik_nazwa);
    $plik_nazwa = str_replace("ą","a",$plik_nazwa);
    $plik_nazwa = str_replace(" ","",$plik_nazwa);
    $plik_nazwa = str_replace("_","",$plik_nazwa);

    if(is_uploaded_file($plik_tmp)) {
         move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
        echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
        <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer! Link do pliku:   <code>http://just4music.superhost24.pl/damian/upload/upload/$plik_nazwa</code> ";
    }
    ?>


    Co tutaj muszę dodać aby mieć to co chce ?? I co muszę zrobić żeby mieć to co na tej stronie: www.iv.pl chce mieć 2 pola do uploadu + żeby 2 dwa pola działały :D Pomocy !!
  • Poziom 13  
    Jak chcesz mieć dopisaną cyfrę do każdego pliku to w pętli for sprawdzasz czy istnieje taki plik:

    Code:
    <?php
    
    $plik_tmp = $_FILES['plik']['tmp_name'];
    $plik_nazwa = $_FILES['plik']['name'];
    $plik_rozmiar = $_FILES['plik']['size'];

    $plik_nazwa = strtolower($plik_nazwa);
    $plik_nazwa = str_replace("ż","z",$plik_nazwa);
    $plik_nazwa = str_replace("ą","a",$plik_nazwa);
    $plik_nazwa = str_replace(" ","",$plik_nazwa);
    $plik_nazwa = str_replace("_","",$plik_nazwa);

    $plik_nazwa_expl = explode(".", $plik_nazwa);
    $ilosc_expl = count($plik_nazwa_expl);

    if ($ilosc_expl == 1)
    {
      $plik_nazwa = $plik_nazwa_expl[0];
      $plik_ext = '';
    }
    else if ($ilosc_expl == 2)
    {
      $plik_nazwa = $plik_nazwa_expl[0];
      $plik_ext = '.'.$plik_nazwa_expl[1];
    }
    else
    {
      $plik_nazwa = '';
      for ($i = 0 ; $i < $ilosc_expl - 1 ; $i++)
      {
        if ($i != 0) $plik_nazwa .= '.';
        $plik_nazwa .= $plik_nazwa_expl[$i];
      }
      $plik_ext = '.'.$plik_nazwa_expl[$ilosc_expl - 1];
    }

    if(is_uploaded_file($plik_tmp))
    {
      for ($i = 0 ; ; $i++)
      {
        if ($i > 0)
          $pom = "_$i";
        else $pom = '';
                      
        $strUploadDir = 'upload/' . $plik_nazwa . $pom . $plik_ext;
                   
        if (!file_exists($strUploadDir)) break;
      }
     
       move_uploaded_file($plik_tmp, $strUploadDir);
        echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
        <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer! Link do pliku:   <code>http://just4music.superhost24.pl/damian/upload/$strUploadDir</code>";
    }
    ?>


    W tym momencie jest sprawdzane czy plik znajduje się na serwerze i gdy jest to ustawia zmienną $pom na odpowiednią liczbę i dopisuje ją.

    Nie zrobiłeś jeszcze zabezpieczenia czy wybrany plik jest za duży. Pole MAX_FILE_SIZE w formularzu to zwykłe pole hidden. W php musisz jeszcze odczytać rozmiar pliku i jeśli jest większy niż MAX_FILE_SIZE to wyświetl błąd. Myślę że z tym sobie poradzisz. W razie czego służę pomocą.

    A co do drugiego pola file, to po prostu stwórz to analogicznie jak dla pierwszego, tylko zmienną 'plik' zastąp np. 'plik2':

    Code:
    ...
    
    <input name="plik2" type="file" />
    ....
    $plik_tmp2 = $_FILES['plik2']['tmp_name'];
    // i dalej analogicznie jak dla pierwszego pliku


    Skrypty pisałem od ręki więc drobne literówki mogą być. Ale ogólny zamysł dobry. Powinieneś sobie poradzić.
  • Poziom 10  
    No ok ale jak to mogę dać aby ten max file size zadziałał bo niedokonca kumam gdzie co i jak :D
  • Poziom 13  
    Porównaj wartość otrzymanego pola MAX_FILE_SIZE z rozmiarem przesłanego pliku:

    Kod: php
    Zaloguj się, aby zobaczyć kod
  • Poziom 10  
    ok spoko ale w którym miejscu to mam dac w kodzie ??

    I powiedzcie ile to ma 512000 na mb ??
    Lub podajcie wi wartosc 5mb tak aby pasowało do tego :D
  • Poziom 13  
    512 000 B = 512kB = 0.5 MB

    5 MB = 5 000 000 B

    A co do tego, gdzie umieścić ten kod, to od razu po pobraniu rozmiaru pliku:

    Kod: php
    Zaloguj się, aby zobaczyć kod
  • Poziom 10  
    OK dzięki niby to dodałem no ale jest problem :D

    Nadal uploadowywuje pliki wieksze niż 5 mb :D

    Dałem to uploadowania plik mający 100 mb i sie uploadował i nic niewyskoczyło ze plik jest za duży :D

    Tutaj to dodałem i nic:
    Kod: php
    Zaloguj się, aby zobaczyć kod



    A i jak dodać żeby okienko wyskoczyło wtedy kiedy się uploadwowywuje coś i pokazało ile się już wrzuciło ??
  • Poziom 25  
    Przecież KojakCK napisał Ci co z tym zrobić. Ty tylko masz sprawdzanie wartości, ale nic z tym nie zrobisz. Daj jakieś die() czy coś w ten deseń.
  • Poziom 10  
    czyli mniej więcej gdzie i co tam dać ??

    Dodano po 34 [minuty]:

    Jak dodać żeby okienko wyskoczyło wtedy kiedy się uploadwowywuje coś i pokazało ile się już wrzuciło ??
  • Poziom 35  
    To sprawdzanie wielkości pliku musisz dać zaraz po naciśnięciu Sub
    mit. Wtedy sprawdzi czy plik jest za duży i wyświetli komunikat, w przeciwnym razie wykona inne instrukcje. Nie możesz zastosować czegoś w stylu echo "Ten plikj est za duży" ponieważ to tylko wyświetli napis i nie zakończy uploadu.

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Oceniając twoją znajomość PHP przepuszczam że pobrałeś gotowy skrypt. Możesz podać do niego link, będzie można skuteczniej działać.
  • Poziom 10  
    Skrypt mam z tej strony: http://www.kess.snug.pl/?sid=10&pid=38

    On jest trochę przerobiony pode mnie a co do mojego php to się w ogóle nie znam na php. :D

    Co do tego kody wkleiłem go i nadal to samo. Plik się wrzuca tylko że długo nic nie wyskakuje.

    I co mam zrobić aby wyskoczyło okienko i pokazało ile się wrzuciło tak jak na www.zippyshare.com?

    Dodano po 1 [minuty]:

    Czy liczba 5000000 w polu max_file to jest 5MB? Bo może złą wartość wpisałem i dlatego wgrywają się duże pliki.
  • Poziom 13  
    Formularz:

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    plik upload.php:

    Kod: php
    Zaloguj się, aby zobaczyć kod
  • Poziom 10  
    OK dałem to co mi podałeś ale teraz mam taki błąd :D

    Code:
    Parse error: syntax error, unexpected '}' in /home/damian0121/domains/just4music.superhost24.pl/public_html/damian/upload/upload.php on line 34


    A na lini 34 mam:
    Code:
    } 


    Nie kumam tego :D
    Podajcie mi wartość 5 mb to tego max_file + jak zrobić aby okienko wyskoczyło i pokazywało ile się już wrzuciło !!
  • Poziom 13  
    No jakoś dziwne bo mi to działa... na pewno dobrze skopiowałeś?
  • Poziom 10  
    Dobrze skopiowałem to ja juz niewiem a jak tobie moze dzialac skoro mi działa :D

    Moze widziesz okienko do upload'u ale ten upload niedziała :D
  • Poziom 13  
    A ty to uruchamiasz na localhoscie czy na serwerze? Bo jak na serwerze to musisz do katalogu /upload dać uprawnienia 777. A wpisz na początku skryptu:

    Code:
    phpinfo();


    i powiedz co wyświetlane jest w zmiennej UPLOAD_MAX_FILESIZE

    A jak masz umieszczone te skrypty? Bo formularz daj w index.php, a skrypt do uploadu do upload.php.
  • Poziom 10  
    OK niby teraz działa bo widac ale plik mi nieuplodowywuje niema go nic :D

    Nawet linku niema co do tego to na serverze to robie a forme do wysyłania mam w index.html a skrypt jest w upload.php :)

    Dodano po 1 [minuty]:

    A i jak zrobić z tym aby okienko wyskoczyło i pokazywało ile sie juz wrzuciło ??
  • Poziom 13  
    Jak wspomniałem:

    KojakCK napisał:
    formularz daj w index.php


    A co do tego okienka to nie rozumiem, jak to ma wyglądać? Jak plik się upload'uje na serwer to ma być okienko z postępem procentowym kopiowania czy jak?
  • Poziom 10  
    no no no chodzi mi oto zeby pokazało ile sie już wrzuciło a mówie ze formularz jest w index.html :D

    I powiedzcie mi czemu to cos niedziała czemu mi sie link niepokazuje do pliku ani notatka ze stało dobrze wrzucone lub zle ??
  • Poziom 13  
    damian01211 napisał:
    mówie ze formularz jest w index.html


    nie rozumiem cię... chyba parę razy ci napisałem:

    KojakCK napisał:
    formularz daj w index.php


    a ty z uporem maniaka dajesz do index.html
  • Poziom 10  
    acha ok ok ok :D

    Dam formularz do index.php :) Sry myślałem ze piszesz o html a nie php

    Ok ale czemu mi ten upload niepokazowywuje się ani link ani nic :D czemu to coś niedziała ??

    I jak zrobić aby mi sie pokazywało ile się już wrzuciło??
  • VIP Zasłużony dla elektroda
    damian01211, zabawy w podchody dość!! Proszę NATYCHMIAST usunąć niechlujstwo językowe we WSZYSTKICH swoich postach na forum. NATYCHMIAST oznacza przed napisaniem jakiegokolwiek nowego postu. Za dotychczasowe niechlujstwo otrzymujesz ostrzeżenie.