檔案處理程式

實驗性: 這是一個 實驗性技術
在生產環境中使用之前,請仔細檢視 瀏覽器相容性表

型別 陣列

file_handlers 成員指定一個物件陣列,表示已安裝的 漸進式 Web 應用 (PWA) 可以處理的檔案型別。

瀏覽器在安裝 PWA 時讀取 file_handlers 成員,並將其用於將應用程式與作業系統級別上的給定檔案型別集關聯起來。

例如,可以將 PWA 註冊為處理與 text/plain MIME 型別 匹配的檔案。安裝此 PWA 後,作業系統能夠使用它來處理文字檔案,在使用者開啟此型別檔案時開啟 PWA。請注意,其他應用程式也可能被註冊為文字檔案處理程式,並且作業系統管理檔案型別與應用程式之間關聯的方式,以及它們讓使用者選擇處理給定檔案的應用程式的方式,可能會因裝置而異。

注意:雖然 file_handlers 成員用於將 PWA 註冊到給定檔案型別集,但這隻會導致作業系統在開啟匹配檔案時啟動 PWA。然後,PWA 需要使用 JavaScript 程式碼實際處理檔案。有關詳細資訊,請參閱 處理檔案

物件陣列。陣列中的每個物件都必須包含以下值(actionaccept 是必需的)

成員 描述
action 包含處理檔案時要導航到的 URL 的字串。
此 URL 必須在 PWA 的導航範圍內,即 PWA 可以導航到的 URL 集。PWA 的導航範圍預設為其 start_url 成員,但也可以使用 scope 成員來定義。
accept 一個物件。對於物件中的每個屬性
  • 屬性鍵是 MIME 型別。
  • 屬性值是表示與該 MIME 型別關聯的副檔名的字串陣列。

示例

在此示例中,Web 應用清單宣告一個檔案處理程式,該處理程式註冊應用程式以處理音訊檔案。其他清單成員(如 nameicons)在本示例中為了簡潔起見而未包含。

json
{
  "file_handlers": [
    {
      "action": "/handle-audio-file",
      "accept": {
        "audio/wav": [".wav"],
        "audio/x-wav": [".wav"],
        "audio/mpeg": [".mp3"],
        "audio/mp4": [".mp4"],
        "audio/aac": [".adts"],
        "audio/ogg": [".ogg"],
        "application/ogg": [".ogg"],
        "audio/webm": [".webm"],
        "audio/flac": [".flac"],
        "audio/mid": [".rmi", ".mid"]
      }
    }
  ]
}

處理檔案

要實際在 PWA 中實現檔案處理,Web 開發人員還需要使用 window.launchQueue 來在應用程式 JavaScript 程式碼中處理傳入的檔案。

檔案處理是在 主執行緒 上執行的應用程式程式碼中完成的,而不是在應用程式的 服務工作者 中。

在以下示例中,window.launchQueue.setConsumer() 用於指定一個回撥函式,該函式接收傳入的音訊檔案並使用 Audio 元素播放第一個檔案

js
async function playSong(handledFile) {
  const blob = await handledFile.getFile();
  const url = window.URL.createObjectURL(blob);
  const audio = new Audio(url);
  audio.play();
}

if ("launchQueue" in window) {
  window.launchQueue.setConsumer((launchParams) => {
    if (launchParams.files && launchParams.files.length) {
      playSong(launchParams.files[0]);
    }
  });
}

規範

規範
清單孵化
# file_handlers-member

瀏覽器相容性

BCD 表格僅在啟用 JavaScript 的瀏覽器中載入。

另請參閱