亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP move_uploaded_file() 函數(將上傳的文件移動到新位置)

2024-09-04 11:42:22
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP move_uploaded_file() 函數,其實就是將上傳的文件移動到新位置,需要的朋友可以參考下。

定義和用法

move_uploaded_file() 函數將上傳的文件移動到新位置。

若成功,則返回 true,否則返回 false。

語法

move_uploaded_file(file,newloc)

參數 描述

file 必需。規定要移動的文件。

newloc 必需。規定文件的新位置。

說明

本函數檢查并確保由 file 指定的文件是合法的上傳文件(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果文件合法,則將其移動為由 newloc 指定的文件。

如果 file 不是合法的上傳文件,不會出現任何操作,move_uploaded_file() 將返回 false。

如果 file 是合法的上傳文件,但出于某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 false,此外還會發出一條警告。

這種檢查顯得格外重要,如果上傳的文件有可能會造成對用戶或本系統的其他用戶顯示其內容的話。

提示和注釋

注釋:本函數僅用于通過 HTTP POST 上傳的文件。

注意:如果目標文件已經存在,將會被覆蓋。

安全補充

來自w3c的介紹,下面說說我遇到的問題。

一般來說,我們都會這樣寫保存文件:

$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name'];

move_uploaded_file($_FILES['file']['tmp_name'],$fileName )

先解釋,這兩句代碼的含義:直接保存文件,同時文件名也為用戶上傳的文件名

好了,這下子風險來了:

①直接保存文件。

這意味著不對文件進行任何識別,如果有用戶上傳了一段后臺代碼保存為jpg后綴或者其他,要是管理員一不注意將其以php映射,然后訪問這個后臺,- -結果可想而知,要是他在后臺中執行刪除所有數據庫,整個網站直接GG??傊苯颖4嫖募泻艽箫L險。

②使用與用戶文件名相同的文件名。

上述代碼如果用戶使用中文文件名,則會報錯。

一牽涉到文件名,就牽涉到編碼,要是文件名是英文+數字還好,如果包含中文那就頭大了,要重新對其編碼。

我認為可靠的保存,應該是這樣的:

①要對用戶上傳的文件進行識別。

文件識別,這個部分有很多功能,我覺得用MIME type就很好,這個也很難偽造。

②要將文件名改換。

我覺得最好改成時間的格式像“201803264104421”這種文件名,也可以將文件名與數據庫相對應起來。

補充:

有兩個參數,第一個參數是你上傳后的臨時文件名,由系統自動生成。通常其樣式為:

$_FILE["file"]["tmp_name"];

其中的file為你前臺文件上傳表單的名稱。

第二個參數就是包含有路徑的新的文件名,如:

"upload/1.jpg";

這樣,就會把你上傳的文件,移動到當前目錄下名稱upload的子目錄下,并把文件名保存為:1.jpg。

move_uploaded_file()函數實例

使用move_uploaded_file()函數上傳文件到服務器。

  1. <?php 
  2.   $tmp_filename = $_FILES['myupload']['tmp_name']; 
  3.   if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES['myupload']['name']}")) { 
  4.    echo "An error has occurred moving the uploaded file.<BR>"
  5.    echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file."
  6.    exit
  7.   } else { 
  8.    echo "The file has been successfully uploaded!"
  9.   } 
  10. ?> 

move_uploaded_file上傳文件失敗的案例及解決方法

今天在實現一個在用戶注冊時上傳頭像圖片文件的PHP腳本時,出現了問題:php腳本代碼如下:

  1. <?php  
  2. define('ROOT',dirname(__FILE__).'/');  
  3.  if ($_FILES["file"]["error"] > 0)  
  4.  {  
  5.   echo "Return Code: " . $_FILES["file"]["error"] . "<br />";  
  6.  }  
  7.  else 
  8.  {  
  9.   echo "Upload: " . $_FILES["file"]["name"] . "<br />";  
  10.   echo "Type: " . $_FILES["file"]["type"] . "<br />";  
  11.   echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";  
  12.   echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";  
  13.   if (file_exists("upload/" . $_FILES["file"]["name"]))  
  14.   {  
  15.    echo $_FILES["file"]["name"] . " already exists. ";  
  16.   }  
  17.   else 
  18.   {  
  19.    if(is_uploaded_file($_FILES['file']['tmp_name'])){  
  20.     $stored_path = ROOT.'/upload/'.basename($_FILES['file']['name']);  
  21.        
  22.     if(move_uploaded_file($_FILES['file']['tmp_name'],$stored_path)){  
  23.      echo "Stored in: " . $stored_path;  
  24.     }else{  
  25.      echo 'Stored failed:file save error';  
  26.     }  
  27.    }else{  
  28.     echo 'Stored failed:no post ';  
  29.    }  
  30.    }  
  31.  }  
  32. ?> 

當我執行執行上面的腳本時,腳本輸出"Stored failed:file save error",很明顯是出錯了.在php_error_log文件中我看到了出錯問題:權限不夠,我終于找到了出錯的地方:我們存放圖片的目的目錄對執行PHP的用戶來說是沒有權限的,執行PHP腳本的用戶和我寫腳本代碼、創建圖片文件夾的用戶不是同一個用戶,因此只需要將文件權限改為777即可。

PHP開發學習 文件上傳(move_uploaded_file)

功能:把上傳的臨時文件移動到upload目錄下面,upload是在根目錄下已經創建好的?。?!

  1. <form action="" enctype="multipart/form-data" method="post" 
  2.   name="uploadfile">上傳文件:<input type="file" name="upfile" /><br>  
  3.  <input type="submit" value="上傳" /></form>  
  4. <?php  
  5. //print_r($_FILES["upfile"]);  
  6. if(is_uploaded_file($_FILES['upfile']['tmp_name'])){  
  7.  $upfile=$_FILES["upfile"];  
  8. //獲取數組里面的值  
  9.  $name=$upfile["name"];//上傳文件的文件名  
  10.  $type=$upfile["type"];//上傳文件的類型  
  11.  $size=$upfile["size"];//上傳文件的大小  
  12.  $tmp_name=$upfile["tmp_name"];//上傳文件的臨時存放路徑  
  13. //判斷是否為圖片  
  14.  switch ($type){  
  15.   case 'image/pjpeg':$okType=true;  
  16.    break;  
  17.   case 'image/jpeg':$okType=true;  
  18.    break;  
  19.   case 'image/gif':$okType=true;  
  20.    break;  
  21.   case 'image/png':$okType=true;  
  22.    break;  
  23.  }  
  24.    
  25.  if($okType){  
  26.   /**  
  27.    * 0:文件上傳成功<br/>  
  28.    * 1:超過了文件大小,在php.ini文件中設置<br/>  
  29.    * 2:超過了文件的大小MAX_FILE_SIZE選項指定的值<br/>  
  30.    * 3:文件只有部分被上傳<br/>  
  31.    * 4:沒有文件被上傳<br/>  
  32.    * 5:上傳文件大小為0  
  33.    */ 
  34.   $error=$upfile["error"];//上傳后系統返回的值  
  35.   echo "================<br/>";  
  36.   echo "上傳文件名稱是:".$name."<br/>";  
  37.   echo "上傳文件類型是:".$type."<br/>";  
  38.   echo "上傳文件大小是:".$size."<br/>";  
  39.   echo "上傳后系統返回的值是:".$error."<br/>";  
  40.   echo "上傳文件的臨時存放路徑是:".$tmp_name."<br/>";  
  41.    
  42.   echo "開始移動上傳文件<br/>";  
  43. //把上傳的臨時文件移動到upload目錄下面(upload是在根目錄下已經創建好的?。。?  
  44.   move_uploaded_file($tmp_name,"upload/".$name);  
  45.   $destination="upload/".$name;  
  46.   echo "================<br/>";  
  47.   echo "上傳信息:<br/>";  
  48.   if($error==0){  
  49.    echo "文件上傳成功啦!";  
  50.    echo "<br>圖片預覽:<br>";  
  51.    echo "<img src=".$destination.">";  
  52. //echo " alt=/"圖片預覽:/r文件名:".$destination."/r上傳時間:/">";  
  53.   }elseif ($error==1){  
  54.    echo "超過了文件大小,在php.ini文件中設置";  
  55.   }elseif ($error==2){  
  56.    echo "超過了文件的大小MAX_FILE_SIZE選項指定的值";  
  57.   }elseif ($error==3){  
  58.    echo "文件只有部分被上傳";  
  59.   }elseif ($error==4){  
  60.    echo "沒有文件被上傳";  
  61.   }else{  
  62.    echo "上傳文件大小為0";  
  63.   }  
  64.  }else{  
  65.   echo "請上傳jpg,gif,png等格式的圖片!";  
  66.  }  
  67. }  
  68. ?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级大片在线观看| 97国产在线观看| 国产欧美日韩最新| 亚洲国产99精品国自产| 国产精品自产拍在线观看中文| 18性欧美xxxⅹ性满足| 中文字幕日韩欧美精品在线观看| 国产日韩欧美另类| 国模精品系列视频| 亚洲性夜色噜噜噜7777| 在线视频亚洲欧美| 日韩高清电影好看的电视剧电影| 国产精品欧美在线| 中文字幕一精品亚洲无线一区| 91精品国产自产在线观看永久| 亚洲天堂色网站| 欧美日韩人人澡狠狠躁视频| 国产成人涩涩涩视频在线观看| 日韩激情av在线免费观看| 国产成人精品一区| 色综合久久88色综合天天看泰| 伊人久久综合97精品| 久久国产精品久久久久久| 波霸ol色综合久久| 国产精品香蕉av| 亚洲综合日韩中文字幕v在线| 91午夜理伦私人影院| 日韩精品中文在线观看| 狠狠躁夜夜躁人人爽天天天天97| 国产成人在线亚洲欧美| 亚洲国产精品国自产拍av秋霞| 日韩欧美在线免费| 国产日韩av高清| 69**夜色精品国产69乱| 国产亚洲成精品久久| 国产精品普通话| 亚洲日韩中文字幕在线播放| 欧美久久精品午夜青青大伊人| 色综久久综合桃花网| 国产精品久久av| 国产精品一区二区av影院萌芽| 国产精品永久免费观看| 正在播放国产一区| 日韩精品久久久久久福利| 国产免费成人av| 久久久久久久久网站| 午夜精品在线观看| 97免费中文视频在线观看| 欧美老肥婆性猛交视频| 粗暴蹂躏中文一区二区三区| 欧美在线视频在线播放完整版免费观看| 亚洲日本aⅴ片在线观看香蕉| xxxxx成人.com| 日韩av片免费在线观看| 亚洲sss综合天堂久久| 欧美xxxx18性欧美| 久久久999精品视频| 欧美色道久久88综合亚洲精品| 欧美激情第99页| 国产精品中文久久久久久久| 亚洲人成电影在线| 久久久久北条麻妃免费看| 日韩欧美精品在线观看| 国产欧美久久一区二区| 日韩国产高清视频在线| 欧美乱大交xxxxx另类电影| 综合网日日天干夜夜久久| 欧美与欧洲交xxxx免费观看| 国产精品久久激情| 国产精品电影一区| 精品国产福利视频| 国产不卡av在线| 日韩电影在线观看永久视频免费网站| 中文字幕精品视频| 日韩精品免费综合视频在线播放| 国产精品视频自拍| 97久久超碰福利国产精品…| 久久久久九九九九| 久久精品福利视频| 久久99国产精品久久久久久久久| 综合国产在线观看| 亚洲国产精品久久久久久| 欧美性猛交xxxx乱大交蜜桃| 日韩av片电影专区| 亚洲大胆人体在线| 午夜免费在线观看精品视频| 欧美裸体xxxx极品少妇软件| 精品国产91久久久久久老师| 久久九九精品99国产精品| 久久频这里精品99香蕉| 中文字幕精品视频| 久久激情五月丁香伊人| 中文国产成人精品| 亚洲午夜未满十八勿入免费观看全集| 国产欧洲精品视频| 中文字幕亚洲一区二区三区| 精品欧美一区二区三区| 少妇高潮 亚洲精品| 成人网在线观看| 欧美区二区三区| 国产精品第10页| 成人福利免费观看| 亚洲欧洲在线观看| 国产精品偷伦免费视频观看的| 久久久精品视频成人| 一本大道亚洲视频| 日本国产精品视频| 日韩在线视频观看| 亚洲欧美国产精品久久久久久久| 国产精品成人av在线| 91久久久精品| 91超碰caoporn97人人| 欧美激情免费视频| 日本精品视频在线播放| 日韩欧美国产骚| 成人动漫网站在线观看| 亚洲精品综合久久中文字幕| 精品国产欧美成人夜夜嗨| 久久五月情影视| 亚洲精品一区中文字幕乱码| 欧美在线观看日本一区| 欧美一区二区三区图| 91精品国产色综合| 亚洲福利精品在线| 亚洲高清久久久久久| 亚洲福利小视频| 国产精品2018| 亚洲精品久久久久国产| 亚洲天堂第一页| 国产精品日韩欧美大师| 欧美日韩国产精品| 亚洲国产欧美一区二区丝袜黑人| www.国产一区| 97精品视频在线| 欧美日韩午夜剧场| 欧美日韩视频在线| 亚洲人成网站在线播| 国产亚洲精品久久久久久| 久久久国产影院| 深夜福利国产精品| 欧美老妇交乱视频| 欧美性猛交xxxx偷拍洗澡| 91免费电影网站| 亚洲免费av电影| 成人免费视频97| 91丨九色丨国产在线| 欧美裸身视频免费观看| 91精品在线观看视频| 成人亲热视频网站| 欧美日韩国产精品一区| 久久久久久网址| 成人免费直播live| 国产精品日日做人人爱| 欧美日韩人人澡狠狠躁视频| www日韩中文字幕在线看| 在线亚洲欧美视频| 在线精品视频视频中文字幕| 中文字幕av日韩| 亚洲福利在线播放| 亚洲视频网站在线观看| 欧美高清无遮挡| 久久久久中文字幕2018| 日本aⅴ大伊香蕉精品视频| 久久久天堂国产精品女人|