php處理上傳文件的步驟,php文件上傳步驟

6303c23c0f78554979f3bc51e22aa8b7.png

我們在開發網站的時候,經常會遇到需要制作文件上傳功能,下面我們就為大家介紹一下php制作文件上傳功能的詳細步驟。

推薦教程:PHP視頻教程

第一步:創建一個文件上傳表單

允許用戶從表單上傳文件是非常有用的。

請看下面這個供上傳文件的 HTML 表單:

Filename:

請留意如下有關此表單的信息:

標簽的 enctype 屬性規定了在提交表單時要使用哪種內容類型。在表單需要二進制數據時,比如文件內容,請使用 "multipart/form-data"。

標簽的 type="file" 屬性規定了應該把輸入作為文件來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有一個瀏覽按鈕。

注釋:允許用戶上傳文件是一個巨大的安全風險。請僅僅允許可信的用戶執行文件上傳操作。

第二步:創建上傳腳本

"upload_file.php" 文件含有供上傳文件的代碼:<?php

if ($_FILES["file"]["error"] > 0)

{

echo "Error: " . $_FILES["file"]["error"] . "
";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "
";

echo "Type: " . $_FILES["file"]["type"] . "
";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

?>

通過使用 PHP 的全局數組 $_FILES,你可以從客戶計算機向遠程服務器上傳文件。

第一個參數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:

●$_FILES["file"]["name"] - 被上傳文件的名稱

●$_FILES["file"]["type"] - 被上傳文件的類型

●$_FILES["file"]["size"] - 被上傳文件的大小,以字節計

●$_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱

●$_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼

這是一種非常簡單文件上傳方式。基于安全方面的考慮,您應當增加有關什么用戶有權上傳文件的限制。

第三步:上傳限制

在這個腳本中,我們增加了對文件上傳的限制。用戶只能上傳 .gif 或 .jpeg 文件,文件大小必須小于 20 kb:<?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

&& ($_FILES["file"]["size"] < 20000))

{

if ($_FILES["file"]["error"] > 0)

{

echo "Error: " . $_FILES["file"]["error"] . "
";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "
";

echo "Type: " . $_FILES["file"]["type"] . "
";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

}

else

{

echo "Invalid file";

}

?>

注釋:對于 IE,識別 jpg 文件的類型必須是 pjpeg,對于 FireFox,必須是 jpeg。

第四步:保存被上傳的文件

上面的例子在服務器的 PHP 臨時文件夾創建了一個被上傳文件的臨時副本。

這個臨時的復制文件會在腳本結束時消失。要保存被上傳的文件,我們需要把它拷貝到另外的位置:<?php

if ((($_FILES["file"]["type"] == "image/gif")

|| ($_FILES["file"]["type"] == "image/jpeg")

|| ($_FILES["file"]["type"] == "image/pjpeg"))

&& ($_FILES["file"]["size"] < 20000))

{

if ($_FILES["file"]["error"] > 0)

{

echo "Return Code: " . $_FILES["file"]["error"] . "
";

}

else

{

echo "Upload: " . $_FILES["file"]["name"] . "
";

echo "Type: " . $_FILES["file"]["type"] . "
";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";

echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";

if (file_exists("upload/" . $_FILES["file"]["name"]))

{

echo $_FILES["file"]["name"] . " already exists. ";

}

else

{

move_uploaded_file($_FILES["file"]["tmp_name"],

"upload/" . $_FILES["file"]["name"]);

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

}

}

}

else

{

echo "Invalid file";

}

?>

上面的腳本檢測了是否已存在此文件,如果不存在,則把文件拷貝到指定的文件夾。

注釋:這個例子把文件保存到了名為 "upload" 的新文件夾。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538892.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab求傅里葉級數展開式_傅里葉級數:從向量的角度看函數

幫助你理解線性代數與機器學習緊密結合的核心內容下文節選自北大出版社《機器學習線性代數基礎》, [遇見]已獲授權許可. 這本書不同于傳統教材, 從新的角度來介紹線性代數的核心知識, 講解也很棒, 又剛好參加參加了當當每滿100-50的活動, 感興趣的朋友可以關注下. 傅里葉級數&a…

c++實現超聲回波包絡檢測_超聲波物位計的選用

超聲波物位計超聲波在氣體、液體和固體介質中以一定速度傳播時因被吸收而衰減&#xff0c;但衰減程度不同&#xff0c;在氣體中衰減最大&#xff0c;而在固體中衰減最小&#xff1b;當超聲波穿越兩種不同介質構成的分界面時會產生反射和折射&#xff0c;且當這兩種介質的聲阻抗…

Android應用開發:CardView的使用及兼容

原文&#xff1a;http://blog.csdn.net/airk000/article/details/39520977 點擊閱讀原文 --------------------------------------------------------------- 引言 在Google I/O 2014上&#xff0c;Google公布了Android L Preview版本&#xff0c;此版本的UI有了非常大的改變…

云海技術u盤怎么恢復成普通盤_BITLOCKER加密中斷數據無法讀取恢復一例

同行求助此問題&#xff0c;密碼客戶是知道的&#xff0c;輸入密碼后提示如圖&#xff1a;如果點擊RESUME則提示如下&#xff1a;無視提示關閉提示框后再次提示分區需要格式化&#xff1a;PC3000 DE中可以添加虛擬驅動器解析BITLOCKER加密的分區&#xff0c;但該例添加虛擬驅動…

git 未能順利結束(退出碼1)

按照這個博客上安裝完小烏龜git后&#xff1a;https://blog.csdn.net/jdsjlzx/article/details/51098588win10下安裝完烏龜git后無法上傳文件進行文件上傳時出現錯誤如下&#xff1a;git 未能順利結束&#xff08;退出碼1&#xff09;&#xff08;922ms2018/4/17 22&#xff1a…

php sql跳過前四條數據,mysql實現每組取前N條記錄的sql,以及后續的組數據量限制...

select a.msg_id, a.com_id, a.data, a.ctime from sns_user_03.user_request_86 a where 5 (select count(*) from sns_user_03.user_request_86 where uid8880386 and com_id a.app_id and msg_id a.msg_id ) order by a.ctime; 上面的sql實現分組查詢&#xff0c;select a.…

交際過程的兩個基本環節_男女相處,若不介意這些“小動作”,基本可以確定“關系曖昧”...

當你對我說再見的時候&#xff0c;我看到你的笑容里有祝福&#xff0c;眼神里卻有遺憾……——南明夫人愛情中最美好幸福的事&#xff0c;莫過于你深愛的人&#xff0c;恰好也鐘情于你。這種兩情相悅的愛情總是如此難得&#xff0c;讓人心生羨慕。這份甜蜜與美好&#xff0c;讓…

Android之NetworkOnMainThreadException異常

原文鏈接&#xff1a;http://blog.csdn.net/mad1989/article/details/25964495 點擊閱讀原文 ------------------------------------------------------------------ 看名字就應該知道&#xff0c;是網絡請求在MainThread中產生的異常 先來看一下官網的解釋&#xff1a; Cl…

中國信通院金融科技負責人韓涵:大數據是生產資料的變革,區塊鏈是生產關系的變革...

在近日召開的“2018中國金融科技產業峰會”上&#xff0c;中國信息通信研究院主任工程師、金融科技負責人韓涵正式發布了《中國金融科技前沿技術發展趨勢及應用場景研究報告》&#xff0c;詳細講解了A&#xff08;人工智能&#xff09;B&#xff08;區塊鏈&#xff09;C&#x…

php mysql 拼音首字母,Mysql應用MySQL查詢漢字的拼音首字母實例教程

《Mysql應用MySQL查詢漢字的拼音首字母實例教程》要點&#xff1a;本文介紹了Mysql應用MySQL查詢漢字的拼音首字母實例教程&#xff0c;希望對您有用。如果有疑問&#xff0c;可以聯系我們。導讀&#xff1a;最好的方法還是用 PHP 來取拼音首字母,在 MySQL 里新建一個字段來存放…

java簡單紙牌游戲_活動回顧 | 暢玩法語紙牌游戲

11月17日下午&#xff0c;20級小伙伴們迎來了第二次法語角活動&#xff01;這次外教Anne-Flore Vrac 老師為同學們安排了豐富有趣的法語紙牌游戲&#xff0c;快來一起回顧活動的精彩瞬間吧&#xff01;集體游戲一&#xff1a;從1到30老師首先帶領同學們進行了“從1到30”的小游…

人臉識別門禁_小區人臉識別門禁或取代傳統門禁刷卡方式

可以說&#xff0c;社區是一個人口聚集的小型社會。首先社區的人流量很大&#xff0c;進出是十分頻繁。其次&#xff0c;社區的大門以及各處進出口是業主與訪客、外來人員等進進出出最關鍵的通道。因此&#xff0c;每個社區都會有一套成型的門禁系統&#xff0c;常見的是使用門…

Java Thread.join()詳解

原文地址&#xff1a;http://www.open-open.com/lib/view/open1371741636171.html 點擊閱讀原文 ------------------------------------------------------------- 一、使用方式。 join是Thread類的一個方法&#xff0c;啟動線程后直接調用&#xff0c;例如&#xff1a; Thr…

元類編程--property動態屬性

from datetime import date, datetime class User:def __init__(self, name, birthday):self.name nameself.birthday birthdayself._age 0# def get_age(self):# return datetime.now().year - self.birthday.yearproperty #動態屬性def age(self): #屬性描述符&#x…

php什么情況下使用靜態屬性,oop-做php項目什么時候該使用靜態屬性呢

一般我們做php項目 類里面 定義的方法 或者 屬性 都是普通的 什么時候該用 static 方法和屬性 有什么例子的我很少用 靜態屬性 就有一次用過 我在做會員中心 要獲取 會員菜單的時候 我用的private static $menu array();大家可以討論下嗎回復內容&#xff1a;一般我們做php項目…

vscode運行python文件_vscode怎么運行python文件

1、首先需要確保安裝了VScode的Python插件&#xff0c;打開Python腳本&#xff0c;可以直接拖入&#xff0c;點擊文件&#xff0c;點擊首選項里的用戶設置&#xff0c;這時候會用戶設置配置文件。2、然后在左邊文件CtrlF搜索Python關鍵字&#xff0c;找到pythonPath所在行3、然…

python輸出日期語句_如何從Python的原始語句中提取時間-日期-時間段信息

經過幾天的研究&#xff0c;我想出了以下方法來解決提取問題。在識別命題&#xff0c;然后識別月份并進行提取。在識別“-”&#xff0c;然后識別月份并進行提取。在部分代碼如下所示。(節選&#xff0c;需要上下文中的依賴項)new_w new_s.split()for j in range(len(new_w)):…

datepicker動態初始化

datepicker 初始化動態表單的input&#xff0c;需要調用jquery的on方法來給未來元素初始化。 //對動態添加的時間文本框進行動態初始化$(table).on("focus", ".datepicker", function () {//添加data屬性未來只初始化一次if ($(this).data("datepicke…

oracle中存儲過程 =,oracle中的存儲過程使用

一 存儲過程的基本應用1 創建存儲過程(SQL窗口)create or replace procedure update_staffasbeginupdate staff set name xy;commit;end update_staff;存儲過程適合做更新操作&#xff0c;特別是大量數據的更新2 查看存儲過程在數據字典中的信息(SQL窗口)select object_name,o…