【代碼學習】PHP檔案的上傳和下載

來源:互聯網
上載者:User

標籤:off   ipa   檔案寫入   osi   代碼   cas   filename   沒有   思維   

=====================

     檔案上傳和下載

=====================

一、php.ini的配置資訊

  file_uploads = On /Off    是否允許檔案上傳
    upload_max_filesize=2M 上傳的檔案的最大大小
    post_max_size = 8M       POST資料所允許的最大大小
    upload_tmp_dir             上傳檔案放置的臨時目錄

二、用戶端上傳設定

    1、 表單必須是POST提交
    2、 上傳的類型:enctype="multipart/form-data"
    3、上傳使用的表單項
        <input type="file" name=".." >
    4、(可選)上傳大小限制的表單隱藏欄位:MAX_FILE_SIZE,
        <input type="hidden" name="MAX_FILE_SIZE" value="大小位元組"/>
        注意:此欄位必須在檔案輸入欄位之前(常放在form標籤後面)

<html><head><title>檔案上傳</title></head><body>    <form action=‘upload.php‘ method=‘POST‘ enctype=‘multipart/form-data‘>        <input type=‘hidden‘ name=‘MAX_FILE_SIZE‘ value=‘1000000‘>        選擇檔案:<input type=‘file‘ name=‘myfile‘>        <input type=‘submit‘ value=‘上傳檔案‘>    </form></body></html>

三、在伺服器端通過PHP處理上傳

    1、 使用$_FILES全域數組來接收上傳資訊
        在每個上傳的檔案裡,$_FILES中都會有5個屬性:
            error:上傳的錯誤號碼:0--4
                0:表示沒有發生任何錯誤。
                1:上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值。
                2:表示上傳檔案大小超出了HTML表單隱藏欄位屬性的MAX_FILE_SIZE元素所指定的最大值。
                3:表示檔案只被部分上傳。
                4:表示沒有上傳任何檔案。
                6:找不到臨時檔案夾
                7:檔案寫入失敗
            name:上傳的檔案名稱
            size:檔案的大小
            type:檔案類型
            tmp_name: 臨時檔案


    2、判斷是否為上傳檔案    is_uploaded_file()

 1 <?php 2 //判斷檔案是否可以上傳到伺服器 3 //$_FILE[‘myfile‘][‘error‘]為0表示上傳成功 4 if($_FILES[‘myfile‘][‘error‘] > 0){ 5     echo ‘上傳錯誤‘; 6     switch ($_FILES[‘myfile‘][‘error‘]){ 7         case 1: die(‘上傳檔案大小超過PHP設定檔中的約定值:upload_max_filesize‘); 8         case 2: die(‘上傳大小超出了表單中的約定值:MAX_FILE_SIZE‘); 9         case 3: die(‘檔案只被部分上傳‘);10         case 4: die(‘沒有上傳任何檔案‘);11         default:die(‘未知錯誤‘);12     }13 }14 ?>


    3、將上傳的檔案移動到新位置    move_uploaded_file()

1 <?php2 $path = ‘./uploads‘3 if(is_uploaded_file($_FILES[‘myfile‘][‘tmp_name‘])){4     if(!move_uploaded_file($_FILES[‘myfile‘][‘tmp_name‘],$path . ‘/‘ . $filename)){5         die(‘不能將檔案移動到指定目錄‘);6     }7 }8 ?>

 

  4、判斷是否為可以上傳的類型

 1 <?php 2 //設定允許的上傳類型 3 $allowtype = array(‘gif‘,‘jpg‘,‘png‘); 4 //拆分數組,並刪除尾碼名 5 $cs = array_pop(explode(‘.‘,$FILES[‘myfile‘][‘name‘])); 6 //通過判斷檔案的副檔名來決定是否是允許上傳的類型 7 if(!in_array($cs,$allowtype)){ 8     die("這個尾碼名是{$cs},不是允許上傳的檔案類型"); 9 }10 ?>

 5、判斷允許上傳檔案大小

1 <?php2 $size = 100000;3 if($FILES[‘myfile‘][‘size‘] > $size){4     die(‘超過了允許{$size}位元組大小‘):5 }6 ?>

 6、上傳後系統定義檔案名稱

1 <?php2 //為了系統安全,也為了同名檔案不會被覆蓋,上傳後將檔案名稱使用系統定義3 $cs = array_pop(explode(‘.‘,$FILES[‘myfile‘][‘name‘]));4 $filename = date(‘YmdHis‘).rand(100,999) . ‘.‘ . $cs;5 }6 ?>

四、多個檔案上傳

只要在用戶端多提供幾個類型為file的輸入表單,並設定不同的name屬性值

 1 <html> 2 <head><title>檔案上傳</title></head> 3 <body> 4     <form action=‘upload.php‘ method=‘POST‘ enctype=‘multipart/form-data‘> 5         <input type=‘hidden‘ name=‘MAX_FILE_SIZE‘ value=‘1000000‘> 6         選擇檔案1:<input type=‘file‘ name=‘myfile[]‘><br> 7         選擇檔案2:<input type=‘file‘ name=‘myfile[]‘><br> 8         選擇檔案3:<input type=‘file‘ name=‘myfile[]‘><br> 9         <input type=‘submit‘ value=‘上傳檔案‘>10     </form>11 </body>12 </html>

五、檔案下載

1 <?php2 header("Content-Type:類型");                              //指定下載的檔案類型3 header("Content-Disposition:attachment;filename=檔案名稱"); //指定下載的檔案描述4 header("Content-Length:檔案大小");                        //指定下載的檔案大小5 readfile("./uploads/".$picname);                         //讀取並輸出圖片內容6 ?>

六、思維導圖

 

【代碼學習】PHP檔案的上傳和下載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.