Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]upload file na serwer
Forum PHP.pl > Forum > Przedszkole
tomi1985
Witam
w jaki sposób można by ten kod zoptymalizować ?
Mam go powtórzonego aż 20 x ponieważ w moim serwisie można wgrać aż 20 zdjęć... lecz strasznie długo czasu to zawiera sad.gif


CODE
//Wgrywanie pliku

if ((($_FILES["file1"]["type"] == "image/gif")
|| ($_FILES["file1"]["type"] == "image/jpeg")
|| ($_FILES["file1"]["type"] == "image/png")
|| ($_FILES["file1"]["type"] == "image/pjpeg"))
&& ($_FILES["file1"]["size"] < 500000))

{
move_uploaded_file($_FILES["file1"]["tmp_name"],
"upload/".$_SESSION[login].$ciag.zamiana($_FILES["file1"]["name"]));
$file1=$_SESSION[login].$ciag.zamiana($_FILES["file1"]["name"]);
}

//file 2
if ((($_FILES["file2"]["type"] == "image/gif")
|| ($_FILES["file2"]["type"] == "image/jpeg")
|| ($_FILES["file2"]["type"] == "image/png")
|| ($_FILES["file2"]["type"] == "image/pjpeg"))
&& ($_FILES["file2"]["size"] < 500000))

{
move_uploaded_file($_FILES["file2"]["tmp_name"],
"upload/".$_SESSION[login].$ciag.zamiana($_FILES["file2"]["name"]));
$file2=$_SESSION[login].$ciag.zamiana($_FILES["file2"]["name"]);
}

//file 3
if ((($_FILES["file3"]["type"] == "image/gif")
|| ($_FILES["file3"]["type"] == "image/jpeg")
|| ($_FILES["file3"]["type"] == "image/png")
|| ($_FILES["file3"]["type"] == "image/pjpeg"))
&& ($_FILES["file3"]["size"] < 500000))

{
move_uploaded_file($_FILES["file3"]["tmp_name"],
"upload/".$_SESSION[login].$ciag.zamiana($_FILES["file3"]["name"]));
$file3=$_SESSION[login].$ciag.zamiana($_FILES["file3"]["name"]);
}

//file 4
if ((($_FILES["file4"]["type"] == "image/gif")
|| ($_FILES["file4"]["type"] == "image/jpeg")
|| ($_FILES["file4"]["type"] == "image/png")
|| ($_FILES["file4"]["type"] == "image/pjpeg"))
&& ($_FILES["file4"]["size"] < 500000))

$upload="upload/";
$file1=$upload.$file1;
$file2=$upload.$file2;
$file3=$upload.$file3;
$file4=$upload.$file4;
vermis
mozesz zrobić to w pętli, ale podejrzewam że czas zabiera przesłanie plików na serwer a nie wykonanie tego kodu.
b4rt3kk
Ale czy jest taka konieczność by ktoś na raz wrzucał aż 2o zdjęć? Kolejny <input type="file" /> powinien się aktywować dopiero jak ktoś użyje poprzedniego. Poza tym własnie możesz użyć pętli, przy jednoczesnej zmianie nazw inputów na tablicową:

  1. <input type="file" name="file[]" />


Wtedy wczytywanie może odbywać się w pętli:

  1. foreach ($_POST['file'] as $key => $value) {
  2. // działanie
  3. }
tomi1985
Cytat
Ale czy jest taka konieczność by ktoś na raz wrzucał aż 2o zdjęć?


Tak owszem, ponieważ w danym pakiecie oferuję klientowi 20 zdjęć... i zazwyczaj wykorzystują to bez najmniejszego problemu... co do pętli to również o niej myślałem... ale jakoś leże z petlami typu "foreach" i myślałem nad zwykłą for...
b4rt3kk
To zrób w pętli for:

  1. for ($i=1; $i<=$liczba_inputow; $i++) {
  2. $nazwa = 'file'.$i;
  3. if ((($_FILES[$nazwa]["type"] == "image/gif")
  4. || ($_FILES[$nazwa]["type"] == "image/jpeg")
  5. || ($_FILES[$nazwa]["type"] == "image/png")
  6. || ($_FILES[$nazwa]["type"] == "image/pjpeg"))
  7. && ($_FILES[$nazwa]["size"] < 500000))
  8.  
  9. {
  10. move_uploaded_file($_FILES[$nazwa]["tmp_name"],
  11. "upload/".$_SESSION[login].$ciag.zamiana($_FILES[$nazwa]["name"]));
  12. $file1=$_SESSION[login].$ciag.zamiana($_FILES[$nazwa]["name"]);
  13. }
  14. }
rocktech.pl
Witam.

1. Jak byk stoją przykłady http://php.net/manual/pl/features.file-upload.multiple.php

2. Co tu nie gra ? -> http://www.php.net/manual/en/language.variables.basics.php
  1. $_SESSION[login]


3. Możesz użyć atrybutu multiple. Z powodzeniem działa ...

  1. <input name="UPLOAD[]" type="file" multiple="multiple" />
tomi1985
dzieki za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.