Я сделал эту форму:
<form enctype="multipart/form-data" action="php/handler.php" method="post" name="uploaderform">
<table>
<tr><td align="right">File:</td><td><input type="hidden" name="MAX_FILE_SIZE" value="30000"/><input type="file" name="filetoup" id="zzz"/></td></tr>
<tr><td align="right">Folder:</td><td><select id="category" name="category"><option value="foo/">some</option><option value="poo/">some2</option></select></td></tr>
<tr><td></td><td><input type="submit" value="Upload" /></td></tr>
</table>
</form>
и этот скрипт PHP:
if((exif_imagetype($_FILES["filetoup"]["tmp_name"])==IMAGETYPE_GIF)
||(exif_imagetype($_FILES["filetoup"]["tmp_name"])==IMAGETYPE_JPEG)
||(exif_imagetype($_FILES["filetoup"]["tmp_name"])==IMAGETYPE_PNG)
&&($_FILES["filetoup"]["size"]<2000000)){
if($_FILES["filetoup"]["error"]>0)
echo $_FILES["filetoup"]["error"];
else {
if(isset($_FILES["filetoup"]["name"]))
$target_path=$folder . basename($_FILES["filetoup"]["name"]);
else
echo "Choose a file";
if(move_uploaded_file($_FILES["filetoup"]["tmp_name"],$target_path))
echo $_FILES["filetoup"]["name"] . "uploaded";
else
echo "Either you fucked up or I did";
}
}else{
echo "read whats under the form";
}
и я могу загружать только файлы .jpeg, .gif и .png не принимаются, и я получаю эту ошибку:
Warning: exif_imagetype() [function.exif-imagetype]: Filename cannot be empty in C:\xampp\htdocs\atthepc\php\handler.php on line 7
Я думаю, что это что-то из моей формы, потому что я могу загрузить .jpeg без каких-либо ошибок, но .gif и .png нет. Если я не прав, что тогда вызывает это? И есть решение или я все делаю не так?
И, наконец, .jpg распознается как .jpeg?
/ редактировать
Не думаю, что я правильно объяснил, что если я пытаюсь загрузить файл JPEG, он работает нормально, но если я пытаюсь использовать любой другой тип файла, он дает мне имя файла не может быть пустым, поэтому моя форма не хочет принимать gif и отправить его по почте, как будто сообщение пусто. почему это происходит?
// редактировать
и да, вот и все, я попробовал это
$something=$_FILES["filetoup"]["tmp_name"];
var_dump($something);
и это дает мне строку (0) "". форма не хочет принимать это, но почему? я не накладывал никаких ограничений на форму.
/// редактировать
Я обнаружил, что у меня проблема: он не принимает файлы другого типа, потому что я пытался загрузить слишком большой файл (анимированный GIF-файл), а max_file_size слишком мало.