2010-12-22 68 views
0

**时,我曾一个简单的上传表单我发现不对劲的结果上简单的上传表单

第一我的代码是:**

$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

文件路径: “ – Hanan 2010-12-22 19:30:23

回答

0

为什么你找不到文件:move_uploaded_file的第二个参数()需要在格式 '路径/要/ file.jpg',所以它应该是:

$folder = "upload/" . $filename; 
move_uploaded_file($tmpname, $folder); 
4

$ _FILES ['XXX '] ['size']在字节,而不是兆字节。因此,除非文件小于2KB,否则会被视为太大。

要检查文件小于2MB,使用方法:

$filesize > 2097152 

此外,你错误地设置了$ tmpname。它应该是...

$tmpname = $_FILES['file']['tmp_name']; 
+0

非常感谢:)错误是(tmp_name)我写错了。谢谢你的帮助 – Hanan 2010-12-22 20:10:38

+1

@beginer in php - 没关系顺便说一句,如果你标记你的首选答案为接受(点击答案左边的灰色勾号)你和答案的人都会收到声望点(Stack Overflow的有效“货币”。) – 2010-12-22 21:04:32

1

PHP报告的文件大小以字节为单位,而不是KB。

尝试else if ($filesize > 2097152)

0

一种方式率先测试的是你处理它们 之前一样,一旦你提交表单,然后做检查 文件大小的值

0

您应该包括呼应所有的值目标字符串中的文件名。

move_uploaded_file($tmpname, $folder . $filename); 

而且,你是中继在浏览器计算文件的大小,你应该使用这样的:

$filesize= filesize($_FILES ['file']['tmp_size'])/1024; //To be in kilobytes as you expect 

其他设置保持它!

0

你可以找到here关于如何创建简单的上传表单的教程