2013-07-05 2 views
1
<?php 

function sprawdz_bledy() 
{ 
    if ($_FILES['fotki']['error'] > 0) 
    { 
    echo 'problem: '; 
    switch ($_FILES['fotki']['error']) 
    { 
     // jest większy niż domyślny maksymalny rozmiar, 
     // podany w pliku konfiguracyjnym 
     case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // jest większy niż wartość pola formularza 
     // MAX_FILE_SIZE 
     case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // plik nie został wysłany w całości 
     case 3: {echo 'Plik wysłany tylko częściowo.'; break;} 

     // plik nie został wysłany 
     case 4: {echo 'Nie wysłano żadnego pliku.'; break;} 

     // pozostałe błędy 
     default: {echo 'Wystąpił błąd podczas wysyłania.'; 
     break;} 
    } 
    return false; 
    } 
    return true; 
} 


function sprawdz_typ() 
{ 
    if ($_FILES['fotki']['type']!= 'image/jpeg') 
    { 
     echo 'nie właściwy format pliku, proszę wybrać plik w formacie JPG'; 
     return false; 
    } 
    return true; 
} 

function zapisz_plik() 
{ 
    global $nazwa_pliku;  

     $filess = glob("./../wnetrza_img/wnetrze_*.jpg"); 
     if (is_array($filess) && count($filess) > 0) { 
    foreach ($filess as $filename) { 
     $files[] = $filename; 
    } 
} else { 
    $files[] = './../wnetrza_img/wnetrze_0.jpg'; 
} 

    if (!empty($files)) { 

    $ostatni = $files[count($files)-1]; 
    $pokaz_ostatni = explode("wnetrze_", $ostatni); 
    $ostatni_czysty = explode(".jpg", $pokaz_ostatni[1]); 
    $dodawanie = $ostatni_czysty[0] +1; 
    $nazwa_pliku = "wnetrze_$dodawanie.jpg"; 
    $lokalizacja = "./../wnetrza_img/$nazwa_pliku"; 
    } 
    else $lokalizacja = "./../wnetrza_img/wnetrze_0.jpg"; 


    if(is_uploaded_file($_FILES['fotki']['tmp_name'])) 
    { 
    if(!move_uploaded_file($_FILES['fotki']['tmp_name'], $lokalizacja)) 
    { 
     echo 'problem: Nie udało się skopiować pliku do katalogu.'; 
     return false; 
    } 
    } 
    else 
    { 
    echo 'problem: Możliwy atak podczas przesyłania pliku.'; 
    echo 'Plik nie został zapisany.'; 
    return false; 
    } 
    return true; 
} 

/*----------------START_WYSYLANIE_ZDJEC----------------*/ 

if (isset($_POST['wyslij'])) { 
    if (!empty($_FILES['fotki']['name'])) { 
     foreach($_FILES['fotki']['tmp_name'] as $key => $tmp_name) { 
      if (sprawdz_bledy('$fotki') && sprawdz_typ('$fotki')) { 
       zapisz_plik('$fotki'); 
      } 
     } 
    } 
} 

/*----------------KONIEC_WYSYLANIE_ZDJECI----------------*/ 

?> 

Это мой код, который один я пытаюсь загрузить несколько файлов на Серуэре, но цикл не хочет работать, я попытался add [$key] после $FILES['fotki']['tmp_name'], но это не помогло слишком.PHP Многофайловый загрузить графический контроль

Не могли бы вы показать мне, где проблема?

////////////////////////// EDIT /////////////////// ////

<?php 

function sprawdz_bledy($key) 
{ 
    if ($_FILES['fotki']['error'][$key] > 0) 
    { 
    echo 'problem: '; 
    switch ($_FILES['fotki']['error']) 
    { 
     // jest większy niż domyślny maksymalny rozmiar, 
     // podany w pliku konfiguracyjnym 
     case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // jest większy niż wartość pola formularza 
     // MAX_FILE_SIZE 
     case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // plik nie został wysłany w całości 
     case 3: {echo 'Plik wysłany tylko częściowo.'; break;} 

     // plik nie został wysłany 
     case 4: {echo 'Nie wysłano żadnego pliku.'; break;} 

     // pozostałe błędy 
     default: {echo 'Wystąpił błąd podczas wysyłania.'; 
     break;} 
    } 
    return false; 
    } 
    return true; 
} 


function sprawdz_typ($key) 
{ 
    if ($_FILES['fotki']['type'][$key]!= 'image/jpeg') 
    { 
     echo 'nie właściwy format pliku, proszę wybrać plik w formacie JPG'; 
     return false; 
    } 
    return true; 
} 

function zapisz_plik($key) 
{ 
    global $nazwa_pliku;  

     $filess = glob("./../wnetrza_img/wnetrze_*.jpg"); 
     if (is_array($filess) && count($filess) > 0) { 
    foreach ($filess as $filename) { 
     $files[] = $filename; 
    } 
} else { 
    $files[] = './../wnetrza_img/wnetrze_0.jpg'; 
} 

    if (!empty($files)) { 

    $ostatni = $files[count($files)-1]; 
    $pokaz_ostatni = explode("wnetrze_", $ostatni); 
    $ostatni_czysty = explode(".jpg", $pokaz_ostatni[1]); 
    $dodawanie = $ostatni_czysty[0] +1; 
    $nazwa_pliku = "wnetrze_$dodawanie.jpg"; 
    $lokalizacja = "./../wnetrza_img/$nazwa_pliku"; 
    } 
    else $lokalizacja = "./../wnetrza_img/wnetrze_0.jpg"; 


    if(is_uploaded_file($_FILES['fotki']['tmp_name'][$key])) 
    { 
    if(!move_uploaded_file($_FILES['fotki']['tmp_name'][$key], $lokalizacja)) 
    { 
     echo 'problem: Nie udało się skopiować pliku do katalogu.'; 
     return false; 
    } 
    } 
    else 
    { 
    echo 'problem: Możliwy atak podczas przesyłania pliku.'; 
    echo 'Plik nie został zapisany.'; 
    return false; 
    } 
    return true; 
} 

/*----------------START_WYSYLANIE_ZDJEC----------------*/ 

if (isset($_POST['wyslij'])) { 
    if (!empty($_FILES['fotki']['name'])) { 
     foreach($_FILES['fotki']['tmp_name'] as $key => $tmp_name) { 
      if (sprawdz_bledy($key) && sprawdz_typ($key)) { 
       zapisz_plik($key); 
      } 
     } 
    } 
} 

/*----------------KONIEC_WYSYLANIE_ZDJECI----------------*/ 

?> 

Вы информация помогла мне, и теперь я добавил аргумент в каждой функции, и теперь он работает, но только для 10 файлов, я не знаю, почему:/

ответ

1

Ваш код полностью сломанные

if (sprawdz_bledy('$fotki') && sprawdz_typ('$fotki')) { 
        ^-- ^-- 

одиночные кавычки (') делают НЕ интерпретировать переменные, поэтому вы передаете литературу $, f, o и т. Д. К вашей функции. Вы делаете это в нескольких местах по всему коду.

Тогда сама функция:

function sprawdz_bledy() 

не принимает никаких аргументов, так что даже если $fotki был принят правильно, вы выбрасываете значение.

В этой функции, вы жёстко все параметры $ _FILES, так что ваш внешний Еогеасп() цикл совершенно бессмысленно:

if ($_FILES['fotki']['error'] > 0) 

Учитывая, что вы делаете петлю Еогеасп на $ _FILES, вы вероятно, хотел что-то подобное:

function sprawdz_bledy($name, $id) { 
    if ($_FILEs[$name]['error'][$id] > 0) { 
+0

ой моя ошибка :) так что, возможно, я должен что-то сделать? LOOP: , если (sprawdz_bledy() && sprawdz_typ()) { \t \t \t \t zapisz_plik(); но какой цикл? или, может быть, у вас есть лучший способ начать 3 funtion для всех файлов, которые будут загружаться? – SkuterPL

+0

OK Я ремонтирую его, спасибо за помощь – SkuterPL

 Смежные вопросы

  • Нет связанных вопросов^_^