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.

Prblem z upload-em plików na serwer

27 Sie 2007 19:43 1899 4
  • Poziom 12  
    Witam
    Chcę aby z przeglądarki klienta możliwy był upload pliku na serwer.
    Stworzyłem formularz upload.html, który wygląda tak:

    <BODY>
    <form name = "formularz1"
    enctype = "multipart/form-data"
    action = "http://127.0.0.1/upload.php"
    method = "POST">
    Nazwa pliku:
    <input type = "file"
    name = "plik1"
    size = "3000"
    value = "">
    <input type = "submit"
    name = "wyslij"
    value = "Wyślij plik">
    </form>
    </BODY>

    I teraz jak rozumie po googlowaniu plik powinien załadować sie do tymczasowego katalogu wynikającego z pliku php.ini. Ścieżka do katalogu tymczasowego była zakomendowana i nie miała wartości, dokonałem edycji, ale jest po staremu. Sekcja wygląda tak:

    ;;;;;;;;;;;;;;;;
    ; File Uploads ;
    ;;;;;;;;;;;;;;;;

    ; Whether to allow HTTP file uploads.
    file_uploads = On

    ; Temporary directory for HTTP uploaded files (will use system default if not
    ; specified).
    ;upload_tmp_dir = /opt/lampp/htdocs/upload

    ; Maximum allowed size for uploaded files.
    upload_max_filesize = 2M

    Plik upload.php jak rozumiem nie ma szans na prawidłowe działanie. Pracuje na pakiecie XAMPP.

    Proszę o pomoc
    Pozdrawiam
  • Poziom 10  
    Po pierwsze, informacja odnośnie maksymalnego rozmiaru uploadowanego pliku, powinna być przechowywana w zmiennej MAX_FILE_SIZE. Zazwyczaj robi się to w ukrytym polu formularza:

    Code:
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />


    Przykład napisania uploadera, znajduje się na stronie php.net http://pl.php.net/manual/pl/features.file-upload.php :>

    Ale pokaż jeszcze źródło pliku upload.php, to coś zaradzimy, IMHO tam gdzieś może siedzieć błąd :>
  • Poziom 12  
    Wszystko zrbiłem w php i dział. Jednak jest problem z upload'em plików większych niż 15 KB. Wyskakuje komunikat że plik jest za wielki, a przecież MAX_FILE_SIZE jest dopuszcza pliki o 4MB (php.iniblokuj po 2MB). Gdzieś przeczytałem ze to wina przeglądarki. Jak temu zaradzić, bo chce wrzucać plik ok. !5 MB .
    kod php wyglada tak:
    <?php
    echo 'Wgraj plik na serwer . <br /><form enctype="multipart/form-data" action="?a=upl" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="5000000555" />
    <input name="plik" type="file" />
    <input type="submit" value="Wyslij plik" />
    </form> ';

    if($_GET['a'] == upl){

    $plik_tmp = $_FILES['plik']['tmp_name'];
    $plik_nazwa = $_FILES['plik']['name'];
    $plik_rozmiar = $_FILES['plik']['size'];
    $sp = explode(".",$plik_nazwa);
    if($sp[1] == "jpg" || $sp[1] == "JPG" || $sp[1] == "php" || $sp[1] == "html") {

    if(is_uploaded_file($plik_tmp)) {
    move_uploaded_file($plik_tmp, "../upload/$plik_nazwa");
    chmod ("../upload/$plik_nazwa", 0777);
    echo 'Plik: <strong>'.$plik_nazwa.'</strong> o rozmiarze
    <strong>'.$plik_rozmiar.' bajtów</strong> został przesłany na serwer!<br /><br />';
    }
    }else{
    echo 'Plik o niedozwolonym rozszerzeniu!';
    exit;
    }
    }

    ?>
  • Poziom 10  
    Jedyna rzecz jaka przychodzi mi teraz na myśl, to upewnij się czy w phpinfo, maksymalny rozmiar uploadowanych plików ma faktycznie limit 2MB. (parametr upload_max_filesize)

    Twój skrypcik zuploadował mi zdjęcie ~500KB zarówno na Firefoxie jak i na Konquerorze, więc na pewno jest w porządku.
    BTW, z jakiej przeglądarki sprawdzałeś ten kod?
  • Poziom 12  
    Robiłem to na operze.
    Problem jest w tym że serwer uwierzytelnia klienta za pomocą jego certyfikatu i wtedy nie można uplodowac więcej 900 KB. Jak uruchamiam skrypt z pozycji, gdzie nie ma uwoerzytelniaia, to ładuje 5M.

    phpinfo mówi
    upload_max_filesize 5M 5M
    upload_tmp_dir /opt/lampp/htdocs/upload /opt/lampp/htdocs/upload

    Pozdrawiam