這是一種非常簡單文件上傳方式。基於安全方面的考慮,您應當增加有關什麼用戶有權上傳文件的限制。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta http-equiv="Content-Language" content="zh-cn" /> </head> <body> <form action="/upload.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /><br /> <input type="submit" name="submit" value="Submit" /> </form> <?php if($_POST){ if ( $_FILES["file"]["size"] < 2000000 ) { 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 { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } } ?> </body> </html>
第一個參數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:
$_FILES["file"]["name"] - 被上傳文件的名稱 $_FILES["file"]["type"] - 被上傳文件的類型 $_FILES["file"]["size"] - 被上傳文件的大小,以字節計 $_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱 $_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼
實例
首先是上傳的提交頁面upfile.html
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <form action="upload.php" enctype="multipart/form-data" method="POST"> <input type="hidden" name="max_file_size" value="33554432"> <input type="file" name="file"> <input type="submit" name="submit" value="上傳" /> </form>
1. PHP支持HTML以POST的方法傳輸文件,但是form中必須聲明enctype的屬性="multipart/form-data",否則整個form表單將不起任何作用。
2. form表單中必須含有一個name為MAX_FILE_SIZE的隱藏域,這個隱藏域用來指定用戶最大能上傳的文件大小,必須聲明在所有其他input標簽之前。如果文件超大的話,浏覽器直接就可以給出提示,不必浪費上傳的時間。
下面就是上傳處理文件upload.php
<?php /* 設定上傳目錄 */ $dest_dir='uploads'; /* 檢測上傳目錄是否存在 */ if( !is_dir($dest_dir) || !is_writeable($dest_dir) ) { die("上傳目錄 ".$dest_dir." 不存在或無法寫入"); } /* 設置允許上傳文件的類型 */ $type=array("rar","zip","txt","c"); /* 獲取上傳文件信息 */ $upfile=&$HTTP_POST_FILES['file']; /* 獲取文件後綴名函數 */ function fileext($filename) { return substr(strrchr($filename, '.'), 1); } /* 判斷上傳文件類型 */ if( !in_array( strtolower( fileext($upfile['name'] ) ),$type) ) { $text=implode(",",$type); echo "對不起,您只能上傳以下類型文件: ",$text,"<br>"; } else { /* 設置文件名為"日期_文件名" */ $dest=$dest_dir.'/'.date("ymdHis")."_".$upfile['name']; /* 移動上傳文件到指定文件夾 */ $state=move_uploaded_file($upfile['tmp_name'],$dest); if ($state) { print("文件上傳成功!<br>"); print("文件名:".$dest."<br>"); print("上傳的文件大小:".( round($upfile['size'] / 1024,2) )." KB<br>"); } else { /* 處理錯誤信息 */ switch($upfile['error']) { case 1 : die("上傳文件大小超出 php.ini:upload_max_filesize 限制<br>"); case 2 : die("上傳文件大小超出 MAX_FILE_SIZE 限制<br>"); case 3 : die("文件僅被部分上傳<br>"); case 4 : die("沒有文件被上傳<br>"); case 5 : die("找不到臨時文件夾<br>"); case 6 : die("文件寫入失敗<br>"); } } } ?>
本文實例講述了JS+CSS實現仿觸屏手機撥號盤界面及功能模擬的方法。分享給大家供大家參考。具體如…
網站畫廊(也稱為網站鑒賞)是設計師常用的參考型工具網站,好的畫廊網站是激發設計師的靈感發源地,作為一個好的網頁設…
“ ... Mark Linton 順便到我的辦公室來了一下,提出了一個使人印象深刻的請求,要求提供…
列表,定義為:以表格為容器,裝載著文字或圖表的一種形式。根據產品類型的不同,大部分都有其各自樣式的列表,有些成為…