国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 PHP中的move_uploaded_file() 函數(shù)

PHP中的move_uploaded_file() 函數(shù)

Jun 07, 2018 pm 04:02 PM
move_uploaded_file php

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

定義和用法

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

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

語法

move_uploaded_file(file,newloc)

參數(shù) 描述
file 必需。規(guī)定要移動的文件。
newloc 必需。規(guī)定文件的新位置。

說明

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

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

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

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

提示和注釋

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

注意:如果目標(biāo)文件已經(jīng)存在,將會被覆蓋。

安全補充

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

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

$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name']; 
move_uploaded_file($_FILES['file']['tmp_name'],$fileName )

先解釋,這兩句代碼的含義:直接保存文件,同時文件名也為用戶上傳的文件名
好了,這下子風(fēng)險來了:

①直接保存文件。

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

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

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

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

我認(rèn)為可靠的保存,應(yīng)該是這樣的:

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

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

②要將文件名改換。

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

補充:

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

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

其中的file為你前臺文件上傳表單的名稱。
第二個參數(shù)就是包含有路徑的新的文件名。如:

"upload/1.jpg";

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

move_uploaded_file()函數(shù)實例

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

<?php
  $tmp_filename = $_FILES[&#39;myupload&#39;][&#39;tmp_name&#39;];
  if(!move_uploaded_file($tmp_filename,"/path/to/dest/{$_FILES[&#39;myupload&#39;][&#39;name&#39;]}")) {
   echo "An error has occurred moving the uploaded file.<BR>";
   echo "Please ensure that if safe_mode is on that the " . "UID PHP is using matches the file.";
   exit;
  } else {
   echo "The file has been successfully uploaded!";
  }
?>

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

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

<?php 
define(&#39;ROOT&#39;,dirname(__FILE__).&#39;/&#39;); 
 if ($_FILES["file"]["error"] > 0) 
 { 
  echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
 } 
 else 
 { 
  echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
  echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; 
  echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 
  if (file_exists("upload/" . $_FILES["file"]["name"])) 
  { 
   echo $_FILES["file"]["name"] . " already exists. "; 
  } 
  else 
  { 
   if(is_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;])){ 
    $stored_path = ROOT.&#39;/upload/&#39;.basename($_FILES[&#39;file&#39;][&#39;name&#39;]); 
     
    if(move_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;],$stored_path)){ 
     echo "Stored in: " . $stored_path; 
    }else{ 
     echo &#39;Stored failed:file save error&#39;; 
    } 
   }else{ 
    echo &#39;Stored failed:no post &#39;; 
   } 
   } 
 } 
?>

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

PHP開發(fā)學(xué)習(xí) 文件上傳(move_uploaded_file)

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

<form action="" enctype="multipart/form-data" method="post" 
  name="uploadfile">上傳文件:<input type="file" name="upfile" /><br> 
 <input type="submit" value="上傳" /></form> 
<?php 
//print_r($_FILES["upfile"]); 
if(is_uploaded_file($_FILES[&#39;upfile&#39;][&#39;tmp_name&#39;])){ 
 $upfile=$_FILES["upfile"]; 
//獲取數(shù)組里面的值 
 $name=$upfile["name"];//上傳文件的文件名 
 $type=$upfile["type"];//上傳文件的類型 
 $size=$upfile["size"];//上傳文件的大小 
 $tmp_name=$upfile["tmp_name"];//上傳文件的臨時存放路徑 
//判斷是否為圖片 
 switch ($type){ 
  case &#39;image/pjpeg&#39;:$okType=true; 
   break; 
  case &#39;image/jpeg&#39;:$okType=true; 
   break; 
  case &#39;image/gif&#39;:$okType=true; 
   break; 
  case &#39;image/png&#39;:$okType=true; 
   break; 
 } 
 
 if($okType){ 
  /** 
   * 0:文件上傳成功<br/> 
   * 1:超過了文件大小,在php.ini文件中設(shè)置<br/> 
   * 2:超過了文件的大小MAX_FILE_SIZE選項指定的值<br/> 
   * 3:文件只有部分被上傳<br/> 
   * 4:沒有文件被上傳<br/> 
   * 5:上傳文件大小為0 
   */ 
  $error=$upfile["error"];//上傳后系統(tǒng)返回的值 
  echo "================<br/>"; 
  echo "上傳文件名稱是:".$name."<br/>"; 
  echo "上傳文件類型是:".$type."<br/>"; 
  echo "上傳文件大小是:".$size."<br/>"; 
  echo "上傳后系統(tǒng)返回的值是:".$error."<br/>"; 
  echo "上傳文件的臨時存放路徑是:".$tmp_name."<br/>"; 
 
  echo "開始移動上傳文件<br/>"; 
//把上傳的臨時文件移動到upload目錄下面(upload是在根目錄下已經(jīng)創(chuàng)建好的?。。? 
  move_uploaded_file($tmp_name,"upload/".$name); 
  $destination="upload/".$name; 
  echo "================<br/>"; 
  echo "上傳信息:<br/>"; 
  if($error==0){ 
   echo "文件上傳成功啦!"; 
   echo "<br>圖片預(yù)覽:<br>"; 
   echo "<img src=".$destination.">"; 
//echo " alt=\"圖片預(yù)覽:\r文件名:".$destination."\r上傳時間:\">"; 
  }elseif ($error==1){ 
   echo "超過了文件大小,在php.ini文件中設(shè)置"; 
  }elseif ($error==2){ 
   echo "超過了文件的大小MAX_FILE_SIZE選項指定的值"; 
  }elseif ($error==3){ 
   echo "文件只有部分被上傳"; 
  }elseif ($error==4){ 
   echo "沒有文件被上傳"; 
  }else{ 
   echo "上傳文件大小為0"; 
  } 
 }else{ 
  echo "請上傳jpg,gif,png等格式的圖片!"; 
 } 
} 
?>

執(zhí)行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請關(guān)注PHP中文網(wǎng)!

相關(guān)推薦:

ThinkPHP中類的構(gòu)造函數(shù)_construct()與_initialize()的區(qū)別

Thinkphp 中 distinct 的用法

以上是PHP中的move_uploaded_file() 函數(shù)的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
PHP調(diào)用AI智能語音助手 PHP語音交互系統(tǒng)搭建 PHP調(diào)用AI智能語音助手 PHP語音交互系統(tǒng)搭建 Jul 25, 2025 pm 08:45 PM

用戶語音輸入通過前端JavaScript的MediaRecorderAPI捕獲并發(fā)送至PHP后端;2.PHP將音頻保存為臨時文件后調(diào)用STTAPI(如Google或百度語音識別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(wù)(如OpenAIGPT)獲取智能回復(fù);4.PHP再調(diào)用TTSAPI(如百度或Google語音合成)將回復(fù)轉(zhuǎn)為語音文件;5.PHP將語音文件流式返回前端播放,完成交互。整個流程由PHP主導(dǎo)數(shù)據(jù)流轉(zhuǎn)與錯誤處理,確保各環(huán)節(jié)無縫銜接。

如何用PHP搭建社交分享功能 PHP分享接口集成實戰(zhàn) 如何用PHP搭建社交分享功能 PHP分享接口集成實戰(zhàn) Jul 25, 2025 pm 08:51 PM

在PHP中搭建社交分享功能的核心方法是通過動態(tài)生成符合各平臺要求的分享鏈接。1.首先獲取當(dāng)前頁面或指定的URL及文章信息;2.使用urlencode對參數(shù)進行編碼;3.根據(jù)各平臺協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶點擊分享;5.動態(tài)生成頁面OG標(biāo)簽優(yōu)化分享內(nèi)容展示;6.務(wù)必對用戶輸入進行轉(zhuǎn)義以防止XSS攻擊。該方法無需復(fù)雜認(rèn)證,維護成本低,適用于大多數(shù)內(nèi)容分享需求。

如何用PHP結(jié)合AI實現(xiàn)文本糾錯 PHP語法檢測與優(yōu)化 如何用PHP結(jié)合AI實現(xiàn)文本糾錯 PHP語法檢測與優(yōu)化 Jul 25, 2025 pm 08:57 PM

要實現(xiàn)PHP結(jié)合AI進行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調(diào)用API并處理返回結(jié)果;3.在應(yīng)用中展示糾錯信息并允許用戶選擇是否采納;4.使用php-l和PHP_CodeSniffer進行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋并更新模型或規(guī)則以提升效果。選擇AIAPI時應(yīng)重點評估準(zhǔn)確率、響應(yīng)速度、價格及對PHP的支持。代碼優(yōu)化應(yīng)遵循PSR規(guī)范、合理使用緩存、避免循環(huán)查詢、定期審查代碼,并借助X

PHP打造博客評論系統(tǒng)變現(xiàn) PHP評論審核與防刷策略 PHP打造博客評論系統(tǒng)變現(xiàn) PHP評論審核與防刷策略 Jul 25, 2025 pm 08:27 PM

1.評論系統(tǒng)商業(yè)價值最大化需結(jié)合原生廣告精準(zhǔn)投放、用戶付費增值服務(wù)(如上傳圖片、評論置頂)、基于評論質(zhì)量的影響力激勵機制及合規(guī)匿名數(shù)據(jù)洞察變現(xiàn);2.審核策略應(yīng)采用前置審核 動態(tài)關(guān)鍵詞過濾 用戶舉報機制組合,輔以評論質(zhì)量評分實現(xiàn)內(nèi)容分級曝光;3.防刷需構(gòu)建多層防御:reCAPTCHAv3無感驗證、Honeypot蜜罐字段識別機器人、IP與時間戳頻率限制阻止灌水、內(nèi)容模式識別標(biāo)記可疑評論,持續(xù)迭代應(yīng)對攻擊。

如何用PHP結(jié)合AI做圖像生成 PHP自動生成藝術(shù)作品 如何用PHP結(jié)合AI做圖像生成 PHP自動生成藝術(shù)作品 Jul 25, 2025 pm 07:21 PM

PHP不直接進行AI圖像處理,而是通過API集成,因為它擅長Web開發(fā)而非計算密集型任務(wù),API集成能實現(xiàn)專業(yè)分工、降低成本、提升效率;2.整合關(guān)鍵技術(shù)包括使用Guzzle或cURL發(fā)送HTTP請求、JSON數(shù)據(jù)編解碼、API密鑰安全認(rèn)證、異步隊列處理耗時任務(wù)、健壯錯誤處理與重試機制、圖像存儲與展示;3.常見挑戰(zhàn)有API成本失控、生成結(jié)果不可控、用戶體驗差、安全風(fēng)險和數(shù)據(jù)管理難,應(yīng)對策略分別為設(shè)置用戶配額與緩存、提供prompt指導(dǎo)與多圖選擇、異步通知與進度提示、密鑰環(huán)境變量存儲與內(nèi)容審核、云存

PHP實現(xiàn)商品庫存管理變現(xiàn) PHP庫存同步與報警機制 PHP實現(xiàn)商品庫存管理變現(xiàn) PHP庫存同步與報警機制 Jul 25, 2025 pm 08:30 PM

PHP通過數(shù)據(jù)庫事務(wù)與FORUPDATE行鎖確保庫存扣減原子性,防止高并發(fā)超賣;2.多平臺庫存一致性需依賴中心化管理與事件驅(qū)動同步,結(jié)合API/Webhook通知及消息隊列保障數(shù)據(jù)可靠傳遞;3.報警機制應(yīng)分場景設(shè)置低庫存、零/負(fù)庫存、滯銷、補貨周期和異常波動策略,并按緊急程度選擇釘釘、短信或郵件通知責(zé)任人,且報警信息需完整明確,以實現(xiàn)業(yè)務(wù)適配與快速響應(yīng)。

超越燈堆:PHP在現(xiàn)代企業(yè)體系結(jié)構(gòu)中的作用 超越燈堆:PHP在現(xiàn)代企業(yè)體系結(jié)構(gòu)中的作用 Jul 27, 2025 am 04:31 AM

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

PHP集成AI語音識別與轉(zhuǎn)寫 PHP會議記錄自動生成方案 PHP集成AI語音識別與轉(zhuǎn)寫 PHP會議記錄自動生成方案 Jul 25, 2025 pm 07:06 PM

選擇合適AI語音識別服務(wù)并集成PHPSDK;2.用PHP調(diào)用ffmpeg將錄音轉(zhuǎn)為API要求格式(如wav);3.上傳文件至云存儲并調(diào)用API異步識別;4.解析JSON結(jié)果并用NLP技術(shù)整理文本;5.生成Word或Markdown文檔完成會議記錄自動化,全過程需確保數(shù)據(jù)加密、訪問控制與合規(guī)性以保障隱私安全。

See all articles