PHP多文件上传图形检查

踏板车
    <?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----------------*/

?>

这是我的代码,其中一个我试图将其上传于serwer几个文件,但环不想工作,我试过add [$key]之后$FILES['fotki']['tmp_name'],但它并没有帮助过。

你能告诉我哪里出问题了吗?

//////////////////////////编辑///////////////////////

<?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个文件,我不知道为什么:/

马克·B

您的代码已完全损坏

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

单引号字符串(')做解释变量,所以你传递文字$fo,等...给你的函数。在整个代码中,您可以在多个地方执行此操作。

然后函数本身:

function sprawdz_bledy()

不接受任何参数,因此即使$fotki正确传递了值,您也会丢弃该值。

在该函数中,您已经对所有$ _FILES参数进行了硬编码,因此您的外部foreach()循环完全没有意义:

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

假设您正在$ _FILES上执行一个foreach循环,则可能需要更多类似的东西:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章