如何用 PHP 上傳檔案?

在免空網站常常看到的『上傳』功能,你是不是也想自己做一個呢?其實 PHP 製作上傳程式並不難,趕快跟著本文學吧~~

一、php.ini設定

上傳檔案前總要做些設定吧,以下列出幾個設定供參考:

  1. file_uploads:檔案上傳 ,設為 On (允許上傳)
  2. upload_max_filesize:上傳最大檔案大小,預設 2M ,建議不要太大
  3. max_execution_time:最大程式執行時間,預設為 30 秒
  4. max_input_time:接收資料時間限制,建議比 max_execution_time 大
  5. memory _limit:最大記憶體,必須比 upload_max_filesize 大,檔案上傳才不會出錯
  6. post_max_size:POST資料量限制,預設 8M,必須比 upload_max_filesize 大

 

二、建立上傳表單

新增一個檔案 index.html,平常看到的上傳按鈕就是用表單製作的,在這裡用POST方法傳遞給 upload.php 做處理

<form action="upload.php" enctype="multipart/form-data" method="post">
選擇檔案:<input id="file" name="file" type="file">
<input id="submit" name="submit" type="submit" value="開始上傳">
</form>

 

 

三、新增資料夾

上傳之後的檔案要放在哪呢?就是放在現在要新增的資料夾裡囉!

新增『file』資料夾,權限必須設為 777

 

 

四、複製並儲存檔案

新增一個檔案為 upload.php,這個檔案用來複製、儲存檔案。

在這裡會用到 $_FILES陣列:

  1. $_FILES['file']['error']:上傳檔案的錯誤代碼,若為 0 則表示沒有錯誤
  2. $_FILES['file']['type']:檔案的 Mime 類型
  3. $_FILES['file']['size']:檔案大小,單位為 Byte
  4. $_FILES['file']['name']:檔案名稱
  5. $_FILES['file']['tmp_name']:檔案的暫存位置

首先,先驗證檔案是否上傳成功,如果出現錯誤則停止程式

<?php
if($_FILES['file']['error']>0){
  exit("檔案上傳失敗!");//如果出現錯誤則停止程式
}
?>

 

由於上傳的檔案只會暫存於系統上,程式執行完畢就會消失,所以必須複製到 file 資料夾儲存。

複製檔案用:move_uploaded_file(檔案位置,新位置)

<?php
if($_FILES['file']['error']>0){
  exit("檔案上傳失敗!");//如果出現錯誤則停止程式
}
move_uploaded_file($_FILES['file']['tmp_name'],'file/'.$_FILES['file']['name']);//複製檔案
echo '<a href="file/'.$_FILES['file']['name'].'">file/'.$_FILES['file']['name'].'</a>';//顯示檔案路徑
?>

 

來測試一下是不是能上傳

 

 

真的可以上傳耶!

 

在這裡只做基本的教學,等摸熟了你也可以嘗試增加大小、類型的限制...等喔~~~

檔案下載:https://gdsecret.com/img/wp/p1480/Php_Upload.zip

 

更多文章:
Secret Upload 2.6 正式公開!!
如何限制 PHP 上傳之檔案格式?
  • 作者:secret
  • 發布
  • 分類:PHP