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 相同。它们接受一个 对象 并返回一个 字符串。它接受的对象具有 filenamenamecontentType(都是字符串)。返回的 字符串 是路径。

filter 函数接受一个 对象 并返回一个 布尔值(或解析为 布尔值 的 Promise)。它接受的对象具有 filenamenamecontentType(都是字符串)。返回的 布尔值 如果您想处理该文件流,则为 true

文档和示例在 MIT