首頁  >  文章  >  後端開發  >  php檔案上傳基礎入門

php檔案上傳基礎入門

小云云
小云云原創
2018-03-02 11:04:201672瀏覽

一、檔案上傳

透過PHP,可以將檔案上傳到伺服器。資料向伺服器端提交資料可以透過form、post方式,但是post不能提交文件類型的資料資訊。
1>php檔案上傳指令設定

  1. file_uploads=on|off

    #   確定伺服器上的PHP腳本是否可以接受檔案上傳。

  2. max_execution_time=integer
      PHP腳本在註冊一個致命錯誤之前可以執行的最長時間,以秒為單位。

  3. memory_limit=integer

    #   設定腳本可以分配到的最大內存,以MB為單位。這可以防止失控的腳本獨佔伺服器記憶體。

  4. upload_max_filesize=integer
      設定上傳檔案最大大小,以MB為單位。

  5. upload_tmp_dir=string
      設定上傳檔案在處理前必須存放在伺服器的暫時一個位置,直到檔案移至最終目的地為止。

  6. post_max_size=integer
      確定透過POST方法可以接受的訊息的最大大小,以MB為單位。

2>$_FILES陣列

<form action="upload_file.php" method="post"enctype="multipart/form-data">
    <label for="file">上传文件:</label>
    <input type="hidden" name="MAX_FILE_SIZE" value="1000"/>
    <input type="file" name="file" id="file" /> 
    <img id="preview">
    <br />
    <input type="submit" name="submit" value="Submit" />
</form>

ENCTYPE=”multipart/form-data”:
 這裡是固定寫法,否則檔案上傳失敗。
 ACTION=”upload.php”:
 定義要處理上傳的程式檔案路徑 。
 METHOD=”post”:
 定義傳輸方式為POST,一般情況下Form提交資料都設定為POST。
 <input type=”hidden” name=”MAX_FILE_SIZE” value=”1000000”>
 這是一個隱藏域,定義了上傳檔案的大小上限,超過這個值時,上傳失敗。它必須定義在檔案上傳域的前面.而且這裡定義的值不能超過在php.ini 檔案中upload_max_filesize設定的值,否則沒有意義了.(注意:MAX_FILE_SIZE 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。 MAX_FILE_SIZE,因為它可以避免用戶在花時間等待上傳大檔案之後才發現該檔案太大了的麻煩。  \
 這是檔案上傳域,Type屬性必須設定為file,但Name屬性可以自訂,這個值會在程式碼檔案中使用。

<?php
    print_r($_FILES);?>
$_FILES超級全域變量,它儲存各種與上傳有關的信息,這些資訊對於透過PHP腳本上傳到伺服器的檔案至關重要。

 1. 儲存在
_FILES[“file”][“name”]變數中的值就是使用者係統中的檔案名稱。

 3. 儲存在_FILES[“file”][“type”]變數中的值是檔案的MIME類型,例如:text/plain或image/gif。
 5. 儲存在$_FILES[“file”][“error”]變數中的值將是任何與檔案上載相關的錯誤代碼。這是在PHP4.2.0中增加的新特性。
error分別提供了一些陣列常數:
 + 0:表示沒有發生錯誤。
 + 1:表示上載檔案的大小超出了約定值。檔案大小的最大值是PHP設定檔中指定的,該指令是upload_max_filesize。
 + 2:表示上載檔案大小超出了HTML表單的MAX_FILE_SIZE元素所指定的最大值。
 + 3:表示文件只被部分上載。
 + 4:表示沒有上載任何文件。

3>上傳函數

PHP也提供了兩個專門用於檔案上傳過程的函數:is_uploaded_file()和move_uploaded_file()。

//确定是否上传文件if (is_uploaded_file($_FILES["file"]["tmp_name"])) {    echo '已经上传到临时文件夹';    $filename = "upload".time()."png";    //移动上传文件(将文件移动到指定文件夹)
    if (!move_uploaded_file($_FILES["file"]["tmp_name"],img/,$filename)) {        echo '移动失败';        exit;
    }else{        echo "移动成功";
    }
} else {    echo '失败';
}
二、檔案目錄


將相關的資料組織為檔案和目錄等實體,程式設計師需要有一種方法來獲得關於檔案和目錄的重要細節,如位置、大小、最後修改時間、最後造訪時間和其他確定資訊。

1>目錄操作
+ 取得目前檔案路徑
 1. __FILE__
  目前檔案路徑+目前檔案名稱
 2. __DIR__
  目前檔案路徑
# 3. dirname( __FILE__)
  目前檔案路徑
 4. basename(__FILE__)
  目前檔案名稱
 5. pathinfo(__FILE__)
  關於路徑的資訊的關聯數組,其中包括:目錄名稱、基本名與副檔名
 6. realpath(__FILE__)
  絕對路徑(前提在目前專案下確實存在這個檔案才能取得絕對路徑,只能讀取目前檔案中對應的檔案路徑資訊)

__FILE__ 和__DIR__是針對目前文件,dinrname()和basename()是針對任意檔案路徑

2>磁碟、目錄和檔案大小計算

1. 檔案大小
 filesize($path)
 計算該檔案大小,位元組為單位。

$file = __FILE__;echo round(filesize($file)/1024).'KB';
  1. 磁碟可用空間大小

     disk_free_space()
     指定的目錄所在磁碟分割區的可用空間。

$drive = 'C:';echo round(disk_free_space($drive)/1024/1024/1024,2).'GB';
  1. 磁盘的总容量
     disk_total_space()
     指定的目录所在磁盘分区的总容量。

$drive = 'C:';echo round(disk_total_space($drive)/1024/1024/1027,2).'GB';

相关推荐:

php文件上传简单实例分享

php文件上传类及PHP封装的多文件上传类分享

HTML5 Ajax文件上传进度条如何显示

以上是php檔案上傳基礎入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn