PHP檔案上傳與下載

來源:互聯網
上載者:User

標籤:val   檔案的   false   server   伺服器   Enctype   XML   htm   組建檔案   

 

一:上傳檔案與報錯

$_FILES 超全域數組,包含了有關上傳檔案的所有資訊!
 而且,這個數組中只包含檔案相關資訊,其他資料依然在$_POST裡面
$_FILES是一個二維數組,每上傳一個檔案,都是數組的一個子數組。每個子數組包含資訊如下

 ‘name‘ => string ‘css面試題目.docx‘ (length=20)(上傳檔案名稱)
‘type‘ => string ‘application/vnd.openxmlformats-officedocument.wordprocessingml.document‘ (length=71)
 (上傳檔案所屬的MIME類型)
‘tmp_name‘ => string ‘F:\0PHP\wamp64\tmp\php47F.tmp‘ (length=29)
(檔案上傳後在伺服器儲存的地址)

關於報錯
‘error‘ => int 0
0:沒錯
1:超過伺服器限制大小。php.ini檔案的upload_max_filesize
2: 超過了用戶端限制大小。表單中的隱藏欄位name="MAX_FILE_SIZE"限制
3.檔案只被上傳一部分
4.檔案沒上傳

二.上傳步驟

var_dump($_FILES);
//取到檔案名稱並用.分隔維數組
$nameArr=explode(".", $_FILES["myFile"]["name"]);
//從上述數組中取到最後一個就是上傳檔案的尾碼名
$houzhuiming=$nameArr[count($nameArr)-1];
//取到使用目前時間+隨機數的方式,隨機組建檔案名
$filename=date("YmdHis").rand(100,999).".".$houzhuiming;
//判斷myfile裡面的臨時檔案是不是上傳過來的
if(is_uploaded_file($_FILES["myFile"]["tmp_name"])){
//將臨時檔案移動到伺服器www根目錄下的upload檔案夾下
//成功返回true,否則false

$isOk=move_uploaded_file($_FILES["myFile"]["tmp_name"], $_SERVER[‘DOCUMENT_ROOT‘]."/upload".$filename);
if(!$isOk){
die("上傳失敗");
}
}else{
die("上傳檔案不合法");
}
echo "<br>檔案上傳成功";

三.檔案下載
    檔案下載的類型使用MIME類型表示
    下載檔案的描述,如給出檔案名稱等
    下載檔案的長度以位元組為單位

    header():發送頭資訊,其前不能有任何輸出

 

 

 

<html>
 <head>
  <title>ddd</title>
 <head>
 <body>
  <form action="todo.php" method="post"

enctype=multipart/form-data>

   <input type="file" name="myfile"><br>
   <input type="hidden" name="MAX_FILE_SIZE"

value=100000>
   <input type="submit" value="上傳">
  </form>
 </body>
</html>

 

<?php

print_r($_FILES);
echo "<br>";
echo "上傳檔案的名稱是:".$_FILES[myfile][name]."<br>";
echo "上傳檔案的類型是:".$_FILES[myfile][type]."<br>";
echo "上傳檔案的類型是:".$_FILES[myfile][tmp_name]."<br>";

$copyto="uploads/".time().$_FILES[myfile][name];  //加上時間或隨機數,防止別人利用上傳的檔案搞破壞
if($_FILES[myfile][error]>0)
{
 switch($_FILES[myfile][error])
 {
  case 1:
   echo "上傳的檔案超過了php.ini中upload_max_filesize的值<br>";
   break;
  case 2:
   echo "上傳檔案超過了HTML表單的max_file_size的值<br>";
   break;
  case 3:
   echo "檔案被部分上傳<br>";
   break;
  case 4: 
   echo "沒有檔案上傳<br>";
   break;
 }
 exit;
}else
{
 if(is_loaded_file($_FILES[myfile][tmp_name]))
 {
 if(move_uploaded_file($_FILES[myfile][tmp_name],$copyto))
 {
  echo "拷貝成功<br>";
 }else
 {
  echo "拷貝失敗<br>";
 }
 }
}

echo "上傳檔案大小為".$_FILES[myfile][size];
?>

 

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.