简单的上传表格

时间:2010-12-22 19:28:42

标签: php

**当我处理一个简单的上传表单时,我发现结果出错了

首先我的代码是:**

$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看到结果会是什么结果是“文件上传”但我找不到上传文件夹中的文件 有人可以帮帮我吗? 有什么不对?

6 个答案:

答案 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有关如何创建简单上传表单的教程