熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP文件上傳代碼用法

2013-11-15 12:25:41  來源: PHP編程 

  php文件上傳代碼編寫過程

   先判斷是否上傳文件

   如果有再來判斷上傳中是否出錯

   如果出錯則提示出錯信息

   如查沒出錯再判斷文件類型

   如果類型符合條件再判斷指定目錄中有沒有存在該文件

   如果沒有就把該文件移至指定目錄

  在php中上傳文件必須知道的幾個東西

  $_FILES[myfile][name] 是指被上傳文件的名稱

  $_FILES[myfile][type] 是指被上傳文件的類型

  $_FILES[myfile][size] 是指被上傳文件的大小單位為字節(B)

  $_FILES[myfile][tmp_name] 是指被上傳文件存在服務器中的臨時副本文件名稱文件被移動到指定目錄後臨文件將被自動消毀

  $_FILES[myfile]["error"] 是指由文件上傳中有可能出現的錯誤的狀態碼關於各狀態含義後在會說明

  先來看一下HTML部分

代碼如下 復制代碼

  ?<form action="uploadphp" method="post" enctype="multipart/formdata">
上傳<input type="file" name="myfile" />
<input type="submit" name="submit" value="上傳" />
</form>

  說明

  form標答的action="uploadphp"是指點擊這個form中的submit的時候這個上傳命令會被發送到這個叫 uploadphp的頁面去處理method="post"是指以post方式去送enctype="multipart/formdata"屬性規定了在提交這個表單時要使用哪種內容類型在表單需要二進制數據時比如文件內容請使用"multipart/formdata"如果要上傳文件這個屬性是必要的input中的type="file"時規定了應該把輸入作為文件來處理並且在input後面會有一個浏覽的按鈕

  我們再來看一個PHP處理頁面 uploadphp

代碼如下 復制代碼

  
<?php
if($_FILES[myfile][name] != ) {
if($_FILES[myfile][error] > ) {
echo "錯誤狀態" $_FILES[myfile][error];
} else {
move_uploaded_file($_FILES[myfile][tmp_name] "uploads/" $FILES[myfile][name]);
echo "<script>alert(上傳成功!);</script>";
}
} else{
echo "<script>alert(請上傳文件!);</script>";
}
?>

  上面超級簡單我們現在來升級一下

  uploadphp

代碼如下 復制代碼

  <!DOCTYPE HTML PUBLIC "//WC//DTD HTML Transitional//EN">
<html>
<head>
<title>ddd</title>
<meta httpequiv="contenttype" content="text/html; charset=UTF">
</head>
<body>
<!文件上傳要注意:要有enctypmethod="post">
<form enctype="multipart/formdata" action="uploadProcessphp" method="post" >
<table>
<tr><td>請填寫用戶名</td><td><input type="text" name="username"></td></tr>
<tr><td>請簡單介紹文件</td><td><textarea rows="" cols="" name="fileintro" style="width:px;"></textarea></td></tr>
<tr><td>請上傳你的文件</td><td><input type="file" name="myfile"></td></tr>
<tr><td colspan=""><input type="submit" value="上傳"><td></tr>
</table>
</form>
</body>
</html>

  uploadProcessphp

代碼如下 復制代碼

  
<?php

  //接收
$username=$_POST[username];
$fileintro=$_POST[fileintro];

//echo $username$fileintro;
//獲取文件信息
/* echo "<pre>";
print_r($_FILES);
echo "</pre>";
*/
//獲取文件的大小
$file_size=$_FILES[myfile][size];
if($file_size>**){
echo "<script type=text/javascript>windowalert(文件不能大於M)</script>";
exit();
}

  //獲取文件類型
$file_type=$_FILES[myfile][type];
if($file_type!="image/jpeg" && $file_type!="image/pjpeg"){
echo "文件類型只能是 jpg 格式";
exit();
}

  //判斷上傳是否OK
if(is_uploaded_file($_FILES[myfile][tmp_name])){
//得到上傳的文件 轉存到你希望的目錄
$upload_file=$_FILES[myfile][tmp_name];

//防止圖片覆蓋問題為每個用戶建立一個文件夾
$user_path=$_SERVER[DOCUMENT_ROOT]"/file/up/"$username;
if(!file_exists($user_path)){
mkdir ($user_path);
}

  //$move_to_file=$user_path"/"$_FILES[myfile][name];
//防止用戶上傳用戶名相同的問題
$file_true_name=$_FILES[myfile][name];
$move_to_file=$user_path"/"time()rand()substr($file_true_namestrripos($file_true_name""));

  //echo $upload_file$move_to_file;
//中文要轉碼
if(move_uploaded_file($upload_fileiconv("utf""gb""$move_to_file"))){
echo $_FILES[myfile][name]"上傳成功";
}else{
echo "上傳失敗";
}
}else{
echo "上傳失敗";
}

  ?>

  注意:

  我舉個例子大家就知道比如一個圖片文件 picjpg我們用 strrchr處理strrchr(picjpg)它將返回jpg明白了嗎?該函數返回指定字符在該字符串最後出現的位置後的字符配合 substr() 我們就可以取到jpg這樣我們就得到了文件的後綴名來判斷上傳文件是否符合指定格式本程序把指定的格式放在一個數組中實際使用時可根據需要添加

  接下來看產生隨機數文件名部分 我們看到mt_srand()這個函數手冊上叫他“播下一個更好的隨機數發生器種子”其實就是初始化一個隨機數的函數參數是(double)microtime() * 這裡如果不這是參數就會自動設置個隨機數當然這不符合我們的需要如此一來隨機數就具備一定的長度保證了上傳文件不重名


From:http://tw.wingwit.com/Article/program/PHP/201311/20924.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.