Upload plików + progress bar w php


(Zielak587) #1

Witam wszystkich.

Mam problem. Napisałem skrypt uploadu plików i chciałbym dodać do niego pasek postępu, tylko że za bardzo nie wiem jak. Bardzo proszę o pomoc.

Mój skrypt:

<?php

require('connect.php');

$typ = $_FILES['file']['type'];

$nazwa = $_FILES['file']['name'];

$rozmiar = $_FILES['file']['size'];

$blad = $_FILES['file']['error'];

$tmp = $_FILES["file"]["tmp_name"];

$elementy = count($nazwa);

$elementy = $elementy - 1;

$data = date("Y-m-d");

$time = time();


$login='zielak587';


//sprawdza ile elementów jest wysyłane

if ($elementy >= 11){

    echo 'Wysyłasz za duzo obrazków. Limit wynosi 10.';

}


//sprawdza czy są błędy

foreach($blad as $blad) {

    if ($blad > 0) {

        echo "Error: " . $blad . "
";

        exit();

    }

}


//pobieranie rozszerzenia pliku

for ($i=0; $i<=$elementy; $i++) {

    $rozszerzenie[$i] = preg_split("/[.]+/", $nazwa[$i]);

}


//sprawdzanie czy plik ma poprawne rozszerzenie

for ($i=0; $i<=$elementy; $i++) {

    if($rozszerzenie[$i][1] != 'cdr' && $rozszerzenie[$i][1] != 'jpg' && $rozszerzenie[$i][1] != 'pjpeg' && $rozszerzenie[$i][1] != 'psd' && $rozszerzenie[$i][1] != 'jpeg' && $rozszerzenie[$i][1] != 'gif' && $rozszerzenie[$i][1] != 'png'&& $rozszerzenie[$i][1] != 'ttf'&& $rozszerzenie[$i][1] != 'bmp'){

        echo 'złe rozszerzenie pliku '.$nazwa[$i].' -> '.$rozszerzenie[$i][1];

        exit;

    }

}


//pobieranie ilości rekordów z bazy danych

$stmt = $pdo->prepare('SELECT COUNT(*) FROM galeria');

$stmt->execute();

$tablica = $stmt->fetchAll(PDO::FETCH_ASSOC);

$z_nazwa = $tablica[0]["COUNT(*)"];

$z_nazwa = $z_nazwa + 1248;


//zmiana nazw plików na liczby

$chars = array_flip(array_merge(range(0, 9), range('a', 'z')));

for($i=0; $i<=$elementy; $i++) {


    for ($a=0, $text=''; $a<4; $a++) {

        $text .= array_rand($chars);

    }

    $nazwa[$i] = $text . $z_nazwa.'.'.$rozszerzenie[$i][1];

    $z_nazwa = $z_nazwa + 1;

}


//dodanie pliku do bazy danych

for ($i=0; $i<=$elementy; $i++) {

    $wyslij1 = "INSERT INTO galeria (nazwa_pliku, login, rozmiar, time, data) VALUES (:nazwa_pliku, :login, :rozmiar, :time, :data)";

    $wyslij = $pdo->prepare($wyslij1);

    $wyslij->execute(array(

        ':nazwa_pliku'=>$nazwa[$i],

        ':login'=>$login,

        ':rozmiar'=>$rozmiar[$i],

        ':time'=>$time,

        ':data'=>$data));

}

//wysyłanie pliku

for ($i=0; $i<=$elementy; $i++) {

    $lokalizacja[$i] = './obrazki/'.$nazwa[$i];

}


for ($i=0; $i<=$elementy; $i++) {

    if(is_uploaded_file($tmp[$i])) {

        if(!move_uploaded_file($tmp[$i], $lokalizacja[$i]))

        {

            echo 'problem: Nie udało się skopiować pliku do katalogu.';

            return false;

        }


    }

    else

    {

        echo 'Plik nie został zapisany.';

        return false;

    }



}

(Tcastarot) #2

Nie napisałeś skryptu, tylko zadeklarowałeś kilka zmiennych :smiley:

W czystym PHP bez instalowania dodatków do serwera nie zrobisz takiego uploadu, współdzielony hostingtakże nie pozwoli na takie rozwiązanie chyba, że masz dedyka, możesz zrobić jedynie prowizoryczny bądź skorzystać z gotowej klasy która wykorzystuje flasha.

http://uploadify.com/demos/ - bardzo lekka i dobra klasa, powinieneś być zadowolony :slight_smile:


(Zielak587) #3

chyba muszę douczyć się trochę js:D


(ziggurad) #4

http://www.uploadify.com/demos/

http://blueimp.github.com/jQuery-File-Upload/


(Zielak587) #5

dzięki, popróbuje cos z tym porobić.