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は"NodeOnDiskFile"であり、"File" APIを実装しています
  // ... etc
};

オプション:

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

filedirectoryの関数APIは同じです。これらはobjectを受け取りstringを返します。受け取るオブジェクトにはfilenamenamecontentType(すべて文字列)があります。返されるstringはパスです。

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