Поиск ничего не дал, так что создам топик здесь (если что, модератор не злитесь, а мирно перенесите тему в нужный раздел...) Итак... При создании загрузчика файлов столкнулся с такой проблемой... Дана форма: HTML: <form method="post" enctype="multipart/form-data" action="engine.php"> <b>01</b><input name="userfile1" type="file" size="40" /> <b>02</b><input name="userfile2" type="file" size="40" /> <b>03</b><input name="userfile3" type="file" size="40" /> <input name="upload" type="submit" value="Загрузить"></form> А вот и сам engine.php: PHP: <?php if ((is_uploaded_file($HTTP_POST_FILES['userfile1']['tmp_name']) || is_uploaded_file($HTTP_POST_FILES['userfile2']['tmp_name']) || is_uploaded_file($HTTP_POST_FILES['userfile3']['tmp_name'])) & ($HTTP_POST_FILES['userfile1']['type']=="image/jpg" || $HTTP_POST_FILES['userfile1']['type']=="image/jpeg" || $HTTP_POST_FILES['userfile2']['type']=="image/jpg" || $HTTP_POST_FILES['userfile2']['type']=="image/jpeg" || $HTTP_POST_FILES['userfile3']['type']=="image/jpg" || $HTTP_POST_FILES['userfile3']['type']=="image/jpeg")) { $nm = mt_rand(12345,999999999); $ras = '.jpg'; if (($HTTP_POST_FILES['userfile1']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile1']['type']=="image/jpeg")) { $nbr="_1"; $iname = $nm.$nbr.$ras; copy ($HTTP_POST_FILES['userfile1']['tmp_name'], $iname); } if (($HTTP_POST_FILES['userfile2']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile2']['type']=="image/jpeg")) { $nbr="_2"; $iname = $nm.$nbr.$ras; copy ($HTTP_POST_FILES['userfile2']['tmp_name'], $iname); } if (($HTTP_POST_FILES['userfile3']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile3']['type']=="image/jpeg")) { $nbr="_3"; $iname = $nm.$nbr.$ras; copy ($HTTP_POST_FILES['userfile3']['tmp_name'], $iname); } } else { print 'Нельзя загрузить данный файл'; } ?> Странно, но вот беда - в IE код НЕ работает, т.е. выдаёт текст 'Нельзя загрузить данный файл'... поэксперементировав со кодом, я понял, что дело в "$HTTP_POST_FILES['userfile']['type']" - т.е. убрав это из кода, всё заработало и в IE... Как же так, IE не передаёт тип файла скрипту? Тогда как обеспечить проверку типа файла и для IE?
а HTTP_POST_FILES ещё существует ? попробуй работает ли такой код: PHP: <? $max_image_width = 380; $max_image_height = 600; $max_image_size = 64 * 1024; $valid_types = array("gif","jpg", "png", "jpeg"); if (isset($_FILES["userfile"])) { if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { $filename = $_FILES['userfile']['tmp_name']; $ext = substr($_FILES['userfile']['name'], 1 + strrpos($_FILES['userfile']['name'], ".")); if (filesize($filename) > $max_image_size) { echo 'Error: File size > 64K.'; } elseif (!in_array($ext, $valid_types)) { echo 'Error: Invalid file type.'; } else { $size = GetImageSize($filename); if (($size) && ($size[0] < $max_image_width) && ($size[1] < $max_image_height)) { if (@move_uploaded_file($filename, "/www/htdocs/upload/".$filename.".".$ext)) { echo 'File successful uploaded.'; } else { echo 'Error: moving fie failed.'; } } else { echo 'Error: invalid image properties.'; } } } else { echo "Error: empty file."; } } else { echo ' <form enctype="multipart/form-data" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="64000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form>'; } ?>
я сталкивался с подобной проблемой, дело в том что допустим ИЕ и Опера передают разные типы одних и тех же файлов допустим в ИЕ джипег это - image/pjpeg, в опере это - image/jpeg сам просто создал скрипт который загружает файл и выдает его тип, и гружу файлики с разных браузеров и смотрю какой тип у них в разных браузерах
я вот такое использую: PHP: <? function getImgByTypeIn($type) { if($type == "image/pjpeg" || $type == "image/jpeg") { $type="jpeg"; } if($type == "image/x-png" || $type == "image/png") { $type="png"; } if($type == "image/gif") { $type="gif"; } return $type; } ?>