:::

11-1 多檔上傳

  1. 假設 file 欄位名稱為 files,多檔上傳的name屬性必須加上[]multiple屬性,如:
    <input type="file" name="files[]" id="files" class="form-control" placeholder="請上傳相片或影片"
      accept=".jpg,.jpeg,.png,.gif,.mp4" multiple />

     

  2. $_FILES 超級全域變數會變成像這樣(三維陣列):
    • $_FILES['files']['name'][0]:第一個檔案原始名稱
    • $_FILES['files']['name'][1]:第二個檔案原始名稱
       
  3. 上傳的步驟:利用迴圈,依序讀出每一個檔案,重點在於其索引值,也就是第幾個檔案的意思,所以每個$_FILES後面都要加上[$i],例如:
    // 依序讀出檔案
    foreach ($_FILES['files']['name'] as $i => $filename) {
        // 若沒檔案就中斷
        if (!$filename) {
            break;
        }
    
        // 檢查檔案是否上傳成功
        if ($_FILES['files']['error'][$i] === UPLOAD_ERR_OK) {
    
            // 讓檔案放在文章編號的目錄下,比較方便管理,檢查有無該目錄
            if (!is_dir(_PATH . "/uploads/{$id}")) {
                // 若無建立原檔目錄
                mkdir(_PATH . "/uploads/{$id}");
                // 順便建立縮圖目錄
                mkdir(_PATH . "/uploads/{$id}/thumbs");
            }
    
            // 暫存檔來源
            $file = $_FILES['files']['tmp_name'][$i];
            // 欲放置到哪裡
            $dest = _PATH . "/uploads/{$id}/{$filename}";
    
            // 將檔案移至指定位置
            if (!move_uploaded_file($file, $dest)) {
                die("無法將檔案{$file}上傳至指定位置{$dest}");
            }
    
        } else {
            die("上傳錯誤:{$_FILES['files']['error'][$i]}");
        }
    }
  4. 最後可以試試一次上傳多檔
  5. 看看資料夾下是否有相關檔案

:::

書籍目錄

展開 | 闔起

快速登入


https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D1812%26tbsn%3D52

計數器

今天: 4580458045804580
昨天: 2489248924892489
總計: 8026562802656280265628026562802656280265628026562