首頁  >  文章  >  後端開發  >  php檔案上傳程式碼用法實例解析

php檔案上傳程式碼用法實例解析

WBOY
WBOY原創
2016-07-25 09:12:161012瀏覽

php檔案上傳程式碼編寫過程 1. 先判斷是否上傳文件 2. 如果有再來判斷上傳中是否出錯 3. 如果出錯,則提示出錯訊息 4. 如查沒出錯,再判斷文件類型 5. 若類型符合條件,再判斷指定目錄中有沒有存在該文件 6. 如果沒有就把該檔案移至指定目錄 在php中上傳檔案必須知道的幾個東西

  1. 上傳:
複製程式碼

說明: form標答的action="upload.php"是指點擊這個form中的submit的時候,這個上傳指令會被送到這個叫 upload.php的頁面去處理。 method="post"是指以post方式去送,enctype="multipart/form-data"屬性規定了在提交這個表單時要使用哪種內容類型,在表單需要二進位資料時,例如文件內容,請使用"multipart/form-data",如果要上傳文件,這個屬性是必要的。 input中的type="file"時,規定了應該把輸入當作檔案來處理,並且在input後面會有一個瀏覽的按鈕。

一個php處理頁 upload.php

  1. if($_files['myfile']['name'] != '') {
  2. if($ _files['myfile']['error'] > 0) {
  3. echo "錯誤狀態:" . $_files['myfile']['error'];
  4. } else {
  5. move_uploaded_file($ _files['myfile']['tmp_name'] , "uploads/" . $files['myfile']['name']);
  6. echo "<script>alert(上傳成功!);</script> ";
  7. }
  8. } else{
  9. echo "<script>alert(請上傳檔案!);</script>";
  10. }
  11. ?>
複製程式碼

升級下以上的php程式碼。 1、upload.php

  1. php檔案上傳程式碼_bbs.it-home.org
  2. 請填入使用者名稱
    請簡單介紹文件
    請上傳你的檔案
複製程式碼

2、uploadprocess.php

  1. //接收

  2. $username=$_post['username'];
  3. $fileintro=$_post['fileintro'];
  4. //echo $username.$fileintro;

  5. //取得檔案資訊
  6. /* echo "
    "; 
  7. print_r($_files);
  8. echo "";
  9. */
  10. //取得檔案的大小
  11. $file_size=$_files['myfile']['size '];
  12. if($file_size>2*1024*1024){
  13. echo "";
  14. exit();
  15. }
  16. //取得檔案類型
  17. $file_type=$_files['myfile']['type'];
  18. if($file_type!="image/ jpeg" && $file_type!="image/pjpeg"){
  19. echo "檔案類型只能是jpg 格式";
  20. exit();
  21. }
  22. //判斷上傳是否ok
  23. if(is_uploaded_file($_files['myfile']['tmp_name'])){
  24. //得到上傳的檔案轉存到你想要的目錄
  25. $upload_file=$_files['myfile'][ 'tmp_name'];
  26. //防止圖片覆蓋問題,為每個使用者建立一個資料夾

  27. $user_path=$_server['document_root']."/file/up/ ".$username;
  28. if(!file_exists($user_path)){
  29. mkdir ($user_path);
  30. }
  31. //$move_to_file=$user_path."/".$_files[' myfile']['name'];
  32. //防止使用者上傳使用者名稱相同的問題
  33. $file_true_name=$_files['myfile']['name'];
  34. $move_to_file=$user_path. "/".time().rand(1,1000).substr($file_true_name,strripos($file_true_name,"."));
  35. //echo $upload_file.$move_to_file;
  36. //中文要轉碼
  37. if(move_uploaded_file($upload_file,iconv("utf-8","gb2312","$move_to_file"))){
  38. echo $_files['myfile']['name']."上傳成功";
  39. }else{
  40. echo "上傳失敗";
  41. }
  42. }else{
  43. echo "上傳失敗";
  44. }
  45. ?>
  46. ?>
  47. ?
複製程式碼

注意: 例如一個圖片檔案 pic.jpg,用 strrchr處理,strrchr(pic.jpg,'.'),它將返回.jpg,明白了嗎?該函數傳回指定字元在該字串最後出現的位置後的字元。 配合 substr() 我們就可以取到jpg,這樣就得到了檔案的後綴名,來判斷上傳檔案是否符合指定格式。本程式把指定的格式放在一個陣列中,實際使用時可依需求添加。

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


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn