我做了这个表格:
<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's?
/编辑
我不认为我正确地解释了自己,如果我尝试上传一个jpeg文件,它工作正常但是如果我尝试任何其他文件类型它给我Filename不能为空,所以我的表单不想接受gif和通过邮件发送,它就像帖子是空的。为什么会发生这种情况?
//编辑 是的,就是这样,我试过这个
$something=$_FILES["filetoup"]["tmp_name"];
var_dump($something);
它给了我字符串(0)“”。形式不想接受它但为什么?我没有对表格施加任何限制。
///修改
我发现了我的问题,它不接受任何其他文件类型,因为我试图上传的内容太大(动画gif)而且max_file_size太少了。
答案 0 :(得分:0)
也许尝试将类型与IF语句进行比较,而不是使用exif_imagetype来比较tmp_name? $ _FILES [ “filetoup”] [ “型”])== IMAGETYPE_GIF
另外,重新JPEG,w3schools.com mentions表示:“注意:对于IE来识别jpg文件,类型必须是pjpeg,对于FireFox,它必须是jpeg。”所以也许这是值得研究的东西
答案 1 :(得分:0)
使用所有if的insted的开关盒,并为每个jpeg,png和gif设置$ target_path,如果它们需要在不同的文件夹中..并且如果tmp image file aint则默认为错误允许..
只是一种方法,希望它有所帮助