**当我处理一个简单的上传表单时,我发现结果出错了
首先我的代码是:**
$filename= $_FILES ['file']['name'];
$filesize= $_FILES ['file']['size'];
$tmpname= $_FILES ['file']['tmp_size'];
$filetype= $_FILES ['file']['type'];
$folder = "upload/";
if(isset($_POST['do']) and $_POST['do']== 'upload'){
if(empty($filename)){
echo "the file is not exist";
}
else if ($filesize > 2048){
echo " the file is biger than 2 MB";
}else{
echo "the file is uploaded";
move_uploaded_file($tmpname, $folder);
}
}
echo "
<form action='upload.php' method='post' enctype='multipart/form-data'>
file path : <input type='file' name='file'/>
<input type='submit' name='do' value='upload'/>
</form>
"
当文件大小小于2048时,结果始终为“文件大于2048” 虽然我确定它不到2 MB 当我让它100000看到结果会是什么结果是“文件上传”但我找不到上传文件夹中的文件 有人可以帮帮我吗? 有什么不对?
答案 0 :(得分:4)
$ _ FILES ['xxx'] ['size']是字节,而不是兆字节。因此,除非文件小于2KB,否则它将被视为太大。
要检查文件是否小于2MB,请使用:
$filesize > 2097152
此外,您正在设置错误的$ tmpname。它应该是......
$tmpname = $_FILES['file']['tmp_name'];
答案 1 :(得分:1)
PHP报告的文件大小以字节为单位,而不是KB。
尝试else if ($filesize > 2097152)
答案 2 :(得分:0)
为什么找不到文件:move_uploaded_file()的第二个参数需要格式为'path / to / file.jpg',所以应该是:
$folder = "upload/" . $filename;
move_uploaded_file($tmpname, $folder );
答案 3 :(得分:0)
早期测试的一种方法是在处理它们之前回显所有值 就像你提交表格然后检查的价值 文件大小
答案 4 :(得分:0)
您应该在目标字符串中包含文件名。
move_uploaded_file($tmpname, $folder . $filename);
此外,您正在使用浏览器计算的文件大小进行转发,您应该使用此代码:
$filesize= filesize($_FILES ['file']['tmp_size']) / 1024; //To be in kilobytes as you expect
保持原样!
答案 5 :(得分:0)
您可以找到here有关如何创建简单上传表单的教程