Mam formularz który uploduje 6 plików na serwer:
<form method="POST" enctype="multipart/form-data" action="krok_3.1.php">
<input type="hidden" name="ok" value="1" />
<input type="hidden" name="MAX_FILE_SIZE" value="52428800" />
<input type="file" name="plik1" /><br />
<input type="file" name="plik2" /><br />
<input type="file" name="plik3" /><br />
<input type="file" name="plik4" /><br />
<input type="file" name="plik5" /><br />
<input type="file" name="plik6" /><br />
<input type="image" SRC="grafika/wyslij.jpg" />
</form>
A na stronie krok_3.1.php skrypt który obsługuje przesłane pliki:
<?
$znacznik_przeslania=1;
for ($i = 1; $i <= 6; $i++) {
$numerpliku="plik".$i;
if($HTTP_POST_VARS['ok'] == 1){
if($HTTP_POST_FILES[$numerpliku]['size'] < 52428800 && $HTTP_POST_FILES[$numerpliku]['size'] != 0){
if(is_uploaded_file($HTTP_POST_FILES[$numerpliku]['tmp_name'])){
move_uploaded_file($HTTP_POST_FILES[$numerpliku]['tmp_name'], "dane/zlecenia/$zlecenie/".$HTTP_POST_FILES[$numerpliku]['name']);
chmod("dane/zlecenia/$zlecenie/".$HTTP_POST_FILES[$numerpliku]['name'], 0777);
chown("dane/zlecenia/$zlecenie/".$HTTP_POST_FILES[$numerpliku]['name'], "fotolucz");
/* zmiana nazwy pliku na nazwe bez polskich znakow diaktrycznych */
$plik_przed="dane/zlecenia/$zlecenie/".$HTTP_POST_FILES[$numerpliku]['name'];
$plik_tmp=str_replace ( array ( "ń", "Ń", "ą", "Ą", "ć", "Ć", "ę", "Ę", "ł", "Ł", "ó" , "Ó", "ś", "Ś", "ź", "Ź", "ż", "Ż", " " ,"%", "@", "^", "#", "$", "&") , array ( "n" , "N", "a", "A", "c", "C", "e", "E", "l", "L", "o", "O", "s", "S", "z", "Z", "z", "Z", "_", "_", "_", "_", "_", "_", "_") , $HTTP_POST_FILES[$numerpliku]['name'] );
$plik_po="dane/zlecenia/$zlecenie/".$plik_tmp;
rename($plik_przed, $plik_po);
/* ====================POBIRANIE ROZSZERZENIA PLIKU====================== */
$pos=strrpos($plik_po, ".");
$file_post=substr($plik_po, 0, $pos);
$file_copy_front=substr($plik_po, 0, $pos);
$file_copy_end=substr($plik_po, $pos);
/* ====================================================================== */
/* ==TWORZENIE MINIATURY DO WYSWIETLENIA NA STRONIE DLA UZYTKOWNIKA=== */
if ($file_copy_end==".jpg" OR $file_copy_end==".JPG") {
$img = imagecreatefromjpeg("dane/zlecenia/$zlecenie/".$plik_tmp);
$width = imagesx($img);
$height = imagesy($img);
$width_mini = $width * 0.1;
$height_mini = $height * 0.1;
$img_mini = imagecreatetruecolor($width_mini, $height_mini);
imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
imagejpeg($img_mini, "dane/zlecenia/$zlecenie/mini/".$plik_tmp, 80);
imagedestroy($img);
imagedestroy($img_mini);
} elseif ( $file_copy_end==".tiff" OR $file_copy_end==".TIFF" OR $file_copy_end==".bmp" OR $file_copy_end==".BMP" OR $file_copy_end==".TIF" OR $file_copy_end==".tif") {
$plik_przed_kop="dane/inne_formaty/inny.jpg";
$plik_po_kop="dane/zlecenia/$zlecenie/mini/inny.jpg";
copy($plik_przed_kop, $plik_po_kop);
chmod($plik_po_kop, 0777);
chown($plik_po_kop, "fotolucz");
$pos=strrpos($file_copy_front, "/");
$file_post=substr($file_copy_front, 0, $pos);
$file_copy_front_I=substr($file_copy_front, 0, $pos);
$pos++;
$file_copy_end_I=substr($file_copy_front, $pos);
$plik_po_zmianie=$file_copy_front_I."/mini/".$file_copy_end_I.".jpg";
rename($plik_po_kop, $plik_po_zmianie);
} else {
unlink ($plik_po);
echo"<span class='tekst_kom'>Plik <strong>".$plik_tmp." nie zostal zapisany</strong> poniewaz nie jest plikiem zdjeciowym!</span><br />";
$znacznik_przeslania=0;
}
/* ===================================================================== */
}
}else{
}
}
}
if ($znacznik_przeslania==0) {echo "<span class='tekst_kom'>Obslugiwane formaty plikow to <strong>JPG, BMP, TIFF</strong>.</span><br /><br />";} else {}
echo"<span class='tekst_kom'>
Jeżeli chcesz dodać kolejne zdjęcia użyj powyższych formularzy.<br />
Jeżeli dodałeś/dodałaś już wszystkie zdjęcia kliknij w przycisk DALEJ<br />
aby ustalić ilość odbitek.
</span>";
echo'<br /><br /><span class="tekst"><strong>Dotychczas przesłane pliki:</strong></span>';
/* #################### Sprawdzanie zawartości katalogu i wypisywanie go. ######################### */
echo '<br />';
if ($handle = opendir("dane/zlecenia/$zlecenie/mini/")) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != "%.txt") {
$plik="dane/zlecenia/$zlecenie/mini/".$file;
$plik_link="dane/zlecenia/$zlecenie/".$file;
echo ("<div id='ramka_3_1'><a href='$plik_link' target='_blank' class='link_do_pliku'><img src='".$plik."' width='70' height='55' class='link_do_pliku' /><br />".$file."</a></div>");
}
}
closedir($handle);
}
?>
Problem polega na tym, że serwer nie chce przyjąć plików większych niż 2MB. Zła konfiguracja serwera czy błąd w skrypcie? Hostin na livenet.pl. Człowiek, który obsługuje serwer nie wie co jest problemem, najciekawsze jest to że ten skrypt działał sprawnie ponad 1,5 roku i ostatnio przestał. Firma hostingowa zmieniała serwery i OS.