React Router v7 已發布。 查看文件
unstable_createFileUploadHandler

unstable_createFileUploadHandler

一個 Node.js 上傳處理器,會將帶有檔案名稱的部分寫入磁碟以避免佔用記憶體,不帶檔案名稱的部分則不會被解析。應與另一個上傳處理器組合使用。

範例

export const action = async ({
  request,
}: ActionFunctionArgs) => {
  const uploadHandler = unstable_composeUploadHandlers(
    unstable_createFileUploadHandler({
      maxPartSize: 5_000_000,
      file: ({ filename }) => filename,
    }),
    // parse everything else into memory
    unstable_createMemoryUploadHandler()
  );
  const formData = await unstable_parseMultipartFormData(
    request,
    uploadHandler
  );

  const file = formData.get("avatar");

  // file is a "NodeOnDiskFile" which implements the "File" API
  // ... etc
};

選項

屬性 類型 預設值 描述
avoidFileConflicts 布林值 true 如果磁碟上已存在相同名稱的檔案,則在檔案名稱結尾附加時間戳記,以避免檔案衝突
directory 字串 | 函式 os.tmpdir() 寫入上傳檔案的目錄。
file 函式 () => upload_${random}.${ext} 目錄中檔案的名稱。可以是相對路徑,如果目錄結構不存在,將會被建立。
maxPartSize 數字 3000000 允許的最大上傳大小(以位元組為單位)。如果超過此大小,將會拋出 MaxPartSizeExceededError 錯誤。
filter 函式 選填 您可以編寫一個函式,根據檔案名稱、內容類型或欄位名稱來阻止儲存檔案上傳。返回 false 則會忽略該檔案。

filedirectory 的函式 API 相同。它們都接受一個 object 並返回一個 string。它們接受的物件具有 filenamenamecontentType (都是字串)。返回的 string 是路徑。

filter 函式接受一個 object 並返回一個 boolean (或解析為 boolean 的 promise)。它接受的物件具有 filenamenamecontentType (都是字串)。如果想要處理該檔案串流,則返回的 booleantrue

文件和範例在以下許可下授權: MIT