国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

怎樣用PHP實現文件上傳

2020-03-22 19:32:22
字體:
來源:轉載
供稿:網友
  • 在WebDev站點上經常看到的一個問題是關于文件上傳的。在這篇文章里我將解釋如何用PHP實現文件
    上傳。 設計上傳表格

    我們主要的目標是完成文件從本地計算機上傳到服務器上去。為了做到這一點,我們需要做一個表
    格,允許用戶選擇一個文件并可以提交它。下面是一個例子:

    <HTML>
    <HEAD>
    <TITLE>文件上傳表格</TITLE>
    </HEAD>
    <BODY>
    <TABLE>
    <FORM ENCTYPE="multipart/form-data" NAME=MyForm
    ACTION=submit.php3
    METHOD="POST">
    <TR><TD>選擇上傳文件</TD><TD><INPUT NAME="MyFile"
    TYPE="File"></TD></TR>
    <TR><TD COLSPAN="2"><INPUT NAME="submit" VALUE="上傳"
    TYPE="submit"></TD></TR>
    </TABLE>
    </BODY>
    </HTML>

    注意表格中的ENCTYPE="multipart/form-data"部分。這個一定不能錯,否則服務器將不知道你在上
    傳文件。

    設計上傳程序

    現在我們已經完成了前臺部分,讓我們再仔細地考慮后臺是如何接收文件并保存它到我們指定的目
    錄下去。下面就開始用PHP了。這是submit.php3的程序:

    <?
    If($MyFile != "none") {
    copy($MyFile,"/home/berber/$MyFile_name");
    unlink($MyFile);
    }
    else {
    echo"你沒有上傳任何文?;
    }
    ?>

    不管你信不信,這就是整個處理過程。我們在程序中所做的就是:

    1. 檢查是否一個文件已經上傳到服務器,通過If($MyFile != "none");
    2. 拷貝文件到指定位置。
    3. 刪除臨時文件。

    當你按下了提交按鈕后,文件將會從你的計算機上傳到服務器的臨時目錄下。在臨時目錄下的文件
    名為一個臨時文件。應該使用file字段的name值來訪問它,在這里為$MyFile。真正的文件名使用file
    字段的name值加上"_name"來訪問它,在這里為$MyFile_name。使用copy()函數,將臨時文件$MyFile拷
    貝到指定目錄下,拷貝后的文件名為$MyFile_name。完成后不要忘了刪除臨時文件,不然你會有許多你
    不想要的文件。

    設置文件名

    一個可能讓程序員睡不著覺的事情就是試圖改變file字段的VALUE屬性的值。并不是很多人知道它
    是不可能的。盡管W3C說可以,但實際上,象IE和Netscape都不允許設置VAUE屬性的值。聽上去有點可
    笑,為什么我不能設置一個初始值,這樣讓用戶使用起來更方便呢?如果你那樣做,那你就會發(fā)現你帶
    來了一個安全上的漏洞。可以設想一下,你登錄到我的網站,我可以改變一個表格中的file字段的值。
    那么有許能阻止我把你的/etc/passwd文件上傳呢?更進一步的,我不需要你按下提交按鈕,我可先設
    置file字段的值,然后通過一段JavaScript程序來模擬提交動作...哇嗚...我可以處理你機器上的任何
    文件了。因為這個原因,瀏覽器簡單地把<INPUT>標記中的file字段的VALUE字段給忽略了。

    限制文件大小

    另一個酷的特性是限制上傳文件的大小選項。只要增加一個<INPUT>標記就可以了:

    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" html' target='_blank'>value="100000">

    這個將不允許用戶上傳超過100KB的文件。

    顯示文件大小

    為了顯示文件大小,可以通過file字段name屬性值加上"_size"這個變量來訪問。在我們的例子中
    就是使用$MyFile_size。所以,如果你想告訴用戶上傳文件的大小,你可以象下面那樣去做:

    echo "You have just uploaded $MyFile_name";
    echo "The size of the file is $MyFile_size";

    權限

    很明顯你需要對目標目錄的寫的權限。如果一個用戶用匿文上傳文件,那他的用戶名應該是
    "bobody"。這個用戶必須有對目標目錄寫的權限否則你可能得到一個象下面的信息:

    Warning: Unable to create '/home/berber/berber.txt':
    Permission denied
    in /home/berber/submit.php3 on line 5PHP編程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 逊克县| 宁德市| 新田县| 彩票| 鲜城| 海丰县| 江永县| 鹤壁市| 秦皇岛市| 湖南省| 滨海县| 青冈县| 突泉县| 克拉玛依市| 商丘市| 鄯善县| 昔阳县| 城固县| 阿鲁科尔沁旗| 高阳县| 怀集县| 凌源市| 宝兴县| 肇州县| 汕头市| 水富县| 靖边县| 丰台区| 中西区| 高台县| 噶尔县| 紫金县| 辽中县| 米泉市| 陆川县| 孝义市| 南昌市| 文安县| 东辽县| 塘沽区| 景泰县|