unstable_createFileUploadHandler

Node.js のアップロードハンドラーで、ファイル名を持つパートをディスクに書き込み、メモリに保持しないようにします。ファイル名のないパートは解析されません。別のアップロードハンドラーと組み合わせて使用する必要があります。

例:

export const action = async ({
  request,
}: ActionFunctionArgs) => {
  const uploadHandler = unstable_composeUploadHandlers(
    unstable_createFileUploadHandler({
      maxPartSize: 5_000_000,
      file: ({ filename }) => filename,
    }),
    // その他すべてをメモリに解析
    unstable_createMemoryUploadHandler()
  );
  const formData = await unstable_parseMultipartFormData(
    request,
    uploadHandler
  );
 
  const file = formData.get("avatar");
 
  // file は "File" API を実装する "NodeOnDiskFile" です
  // ... など
};

オプション:

プロパティデフォルト説明
avoidFileConflictsbooleantrueディスクに既に存在する場合、ファイル名の末尾にタイムスタンプを追加して、ファイル名の競合を回避します。
directorystring | Functionos.tmpdir()アップロードを書き込むディレクトリ。
fileFunction() => upload_${random}.${ext}ディレクトリ内のファイル名。相対パスを指定できます。ディレクトリ構造が存在しない場合は作成されます。
maxPartSizenumber3000000許可される最大アップロードサイズ(バイト単位)。サイズを超過すると、MaxPartSizeExceededError がスローされます。
filterFunctionOPTIONALファイル名、コンテンツタイプ、またはフィールド名に基づいて、ファイルアップロードの保存を防止するために記述できる関数。false を返すと、ファイルは無視されます。

file および directory の関数 API は同じです。object を受け取り、string を返します。受け取るオブジェクトには、filenamename、および contentType(すべて文字列)があります。返される string はパスです。

filter 関数は object を受け取り、boolean(または boolean に解決される Promise)を返します。受け取るオブジェクトには、filenamename、および contentType(すべて文字列)があります。返される boolean は、そのファイルストリームを処理する場合は true です。