php檔案上傳程式碼編寫過程
1. 先判斷是否上傳文件
2. 如果有再來判斷上傳中是否出錯
3. 如果出錯,則提示出錯訊息
4. 如查沒出錯,再判斷文件類型
5. 若類型符合條件,再判斷指定目錄中有沒有存在該文件
6. 如果沒有就把該檔案移至指定目錄
在php中上傳檔案必須知道的幾個東西
說明:
form標答的action="upload.php"是指點擊這個form中的submit的時候,這個上傳指令會被送到這個叫 upload.php的頁面去處理。 method="post"是指以post方式去送,enctype="multipart/form-data"屬性規定了在提交這個表單時要使用哪種內容類型,在表單需要二進位資料時,例如文件內容,請使用"multipart/form-data",如果要上傳文件,這個屬性是必要的。 input中的type="file"時,規定了應該把輸入當作檔案來處理,並且在input後面會有一個瀏覽的按鈕。
一個php處理頁 upload.php
-
-
if($_files['myfile']['name'] != '') {
- if($ _files['myfile']['error'] > 0) {
- echo "錯誤狀態:" . $_files['myfile']['error'];
- } else {
- move_uploaded_file($ _files['myfile']['tmp_name'] , "uploads/" . $files['myfile']['name']);
- echo "<script>alert(上傳成功!);</script> ";
- }
- } else{
- echo "<script>alert(請上傳檔案!);</script>";
- }
- ?>
複製程式碼
升級下以上的php程式碼。
1、upload.php
-
-
-
-
- php檔案上傳程式碼_bbs.it-home.org
-
-
-
-
-
複製程式碼
2、uploadprocess.php
-
-
//接收
- $username=$_post['username'];
- $fileintro=$_post['fileintro'];
//echo $username.$fileintro;
- //取得檔案資訊
- /* echo "
";
- print_r($_files);
- echo "";
- */
- //取得檔案的大小
- $file_size=$_files['myfile']['size '];
- if($file_size>2*1024*1024){
- echo "";
- exit();
- }
- //取得檔案類型
- $file_type=$_files['myfile']['type'];
- if($file_type!="image/ jpeg" && $file_type!="image/pjpeg"){
- echo "檔案類型只能是jpg 格式";
- exit();
- }
- //判斷上傳是否ok
- if(is_uploaded_file($_files['myfile']['tmp_name'])){
- //得到上傳的檔案轉存到你想要的目錄
- $upload_file=$_files['myfile'][ 'tmp_name'];
//防止圖片覆蓋問題,為每個使用者建立一個資料夾
- $user_path=$_server['document_root']."/file/up/ ".$username;
- if(!file_exists($user_path)){
- mkdir ($user_path);
- }
- //$move_to_file=$user_path."/".$_files[' myfile']['name'];
- //防止使用者上傳使用者名稱相同的問題
- $file_true_name=$_files['myfile']['name'];
- $move_to_file=$user_path. "/".time().rand(1,1000).substr($file_true_name,strripos($file_true_name,"."));
- //echo $upload_file.$move_to_file;
- //中文要轉碼
- if(move_uploaded_file($upload_file,iconv("utf-8","gb2312","$move_to_file"))){
- echo $_files['myfile']['name']."上傳成功";
- }else{
- echo "上傳失敗";
- }
- }else{
- echo "上傳失敗";
- }
- ?>
- ?>
- ?
複製程式碼
注意:
例如一個圖片檔案 pic.jpg,用 strrchr處理,strrchr(pic.jpg,'.'),它將返回.jpg,明白了嗎?該函數傳回指定字元在該字串最後出現的位置後的字元。
配合 substr() 我們就可以取到jpg,這樣就得到了檔案的後綴名,來判斷上傳檔案是否符合指定格式。本程式把指定的格式放在一個陣列中,實際使用時可依需求添加。
再看產生隨機數檔名部分, 看到mt_srand()這個函數,手冊上叫他“播下一個更好的隨機數發生器種子”,其實就是初始化一個隨機數的函數,參數是( double)microtime() * 1000000,這裡如果不這是參數就會自動設定個隨機數,當然這不符合需要,如此一來,隨機數就具備一定的長度,保證了上傳檔案不重名。 |