11月15日上午檔案上傳

來源:互聯網
上載者:User

標籤:set   迴圈   錯誤資訊   攻擊   Enctype   標題   size   沒有   ipa   

1.檔案上傳後提交顯示的資訊

<form action="chuli.php" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data代表的是上傳檔案-->    <input type="file" name="file" />    <input type="submit" value="上傳" /></form>
<?phpvar_dump($_FILES);//$_FILES代表的是找檔案

點擊上傳後顯示下面資訊。

 

顯示的資料是一個二維數組,file代表上傳的選框的name值,file裡面的數組是上傳的圖片的基本資料。

(1)name:檔案名稱為001.png

(2)type:上傳檔案的類型

(3)tmp_name:上傳的檔案臨時儲存的路徑,如果不操作就會刪掉。

(4)error:上傳過程中的錯誤資訊。

(5)size上傳檔案的大小,單位是位元組b。

 

2.上傳檔案的具體步驟

<form action="chuli.php" method="post" enctype="multipart/form-data"><!--enctype="multipart/form-data代表的是上傳檔案-->    <input type="file" name="file" /><!--這裡可以上傳多個檔案,在chuli.php處理頁面中就要用迴圈來上傳檔案。-->    <input type="submit" value="上傳" /></form>
<?php//var_dump($_FILES);//$_FILES代表的是找檔案//檔案上傳之前需要做的一些事情//1.判斷是否出錯//2.控制上傳的格式,格式要嚴格控制,以防傳入代碼類的檔案攻擊資料庫。//3.控制上傳檔案的大小,不能上傳大檔案,一般資料庫會限制上傳檔案的大小。如果要上傳大檔案就要修改php的配製檔案。//4.控制檔案名稱不能重複(如果重複不能上傳。)    //怎麼讓檔案名稱不重複    //1.檔案名稱自動產生,例如用檔案名稱+時間戳記+隨機數來命名    //2.使用檔案夾的方式,每一個使用者上傳是用程式建一個檔案夾來放檔案。    //3.使用流水號是最穩妥的方法,取到最後一個檔案的流水號再加1.//5.儲存檔案if(!$_FILES["file"]["error"])//判斷是否出錯,如果沒有錯誤。//如果表單裡面寫了2個input,說明上傳了2個檔案,要從數組裡面找到檔案的名字取出來。{    if($_FILES["file"]["type"]=="image/png" && $_FILES["file"]["size"]<1024000)    //判斷檔案類型,從數組裡面的type取。檔案類型最好先輸出檔案的基本參數,從參數裡面把檔案類型複製過來。一些檔案名稱不好寫。    //同時判斷檔案的大小    {        //$filename = "./file/";//要把檔案儲存體的目標位置,後面可以寫檔案名稱,但是檔案多了容易出問題。        //$filename = "./file/".$_FILES["file"]["name"];//所以一般用檔案自身的名字,在儲存位置後面拼上檔案名稱。        $filename = "./file/".date("YmdHis").$_FILES["file"]["name"];        $filename = iconv("UTF-8","gb2312",$filename);        //第一個參數是原編碼格式,第二個參數是要轉的編碼格式,第三個是要轉的字串。        //上傳檔案的編碼格式為utf-8,在電腦裡顯示的格式是國標,這裡要轉化為國標的編碼格式。        if(!file_exists($filename))//判斷檔案是否已經存在        {            move_uploaded_file($_FILES["file"]["tmp_name"],$filename);//上傳代碼,實際上檔案已經在伺服器,這裡只是把檔案儲存下來。        }        else        {            echo "該檔案已存在";        }    }}else{    echo $_FILES["file"]["error"];//如果出錯,輸出錯誤資訊。}

 

3.上傳按鈕的最佳化

 這裡的選擇檔案可以換成圖片,點擊圖片上傳。做一個圖放在選擇檔案裡面,再把上傳檔案按鈕做的和圖片大小一致,透明度設定為完全透明,但是要讓選擇檔案在上層,這樣點擊圖片時實際上是點擊的選擇檔案按鈕。

 

4.上傳預覽,上傳圖片時先預覽,點擊儲存或者上傳時才是真正的上傳。

網頁和js只能動作伺服器的檔案,不能操作用戶端檔案。下面是雙傳頭像預覽處理代碼。

shangchuantouxiangyulan.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title></head><body><form id="sc" action="yulanchuli.php" target="hidden_frame" method="post" enctype="multipart/form-data">    <div id="yl" style="margin-left:0px; width:144px; height:170px; background-size:144px 170px; background-image:url(images/2015042215293286617.jpg)">        <input type="file" name="file" style="width:144px; height:170px; float:left; opacity:0;" width="146" onchange="document.getElementById(‘sc‘).submit()"/>           </div>    <input type="button" value="儲存"/></form><iframe style="display:none;" name="hidden_frame" id="hidden_frame"></iframe></body><script type="text/javascript">//回呼函數function showimg(aa){    var l = document.getElementById("yl");    l.style.backgroundImage = "url("+aa+")";}</script></html>

處理頁面yulanchuli.php

<?php   //上傳檔案限制   if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 10000000))  {      //檔案上傳是否出錯      if ($_FILES["file"]["error"] > 0)    {        echo "上傳出錯: " . $_FILES["file"]["error"] . "<br />";    }      else    {                //判斷檔案是否已存在    $filename = "images/".$_FILES["file"]["name"];    $filename = iconv("UTF-8","gb2312",$filename);         if (file_exists($filename))      {          echo "<script language=‘javascript‘>alert(‘檔案已經存在!‘)</script>";                 }    else      {          //移動圖片至儲存路徑,解決中文亂碼問題            move_uploaded_file($_FILES["file"]["tmp_name"],$filename);          echo "<script language=‘javascript‘>parent.showimg(‘".$filename."‘)</script>";      }    }  }  else  {      echo "上傳失敗";  }?>

 

11月15日上午檔案上傳

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.