2010-12-22 65 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關於如何創建簡單的上傳表單的教程