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 boolean true 如果磁盘上已存在同名文件,则通过在文件名末尾附加时间戳来避免文件冲突
directory string | Function os.tmpdir() 写入上传的目录。
file Function () => upload_${random}.${ext} 目录中文件的名称。可以是相对路径,如果目录结构不存在,则会创建它。
maxPartSize number 3000000 允许的最大上传大小(以字节为单位)。如果超出大小,将抛出 MaxPartSizeExceededError 错误。
filter Function 可选 您可以编写一个函数,根据文件名、内容类型或字段名称来阻止保存文件上传。返回 false,该文件将被忽略。

filedirectory 的函数 API 是相同的。它们接受一个 object 并返回一个 string。它接受的对象具有 filenamenamecontentType(均为字符串)。返回的 string 是路径。

filter 函数接受一个 object 并返回一个 boolean 值(或一个解析为 boolean 值的 promise)。它接受的对象具有 filenamenamecontentType 属性(均为字符串类型)。如果希望处理该文件流,则返回的 boolean 值为 true

文档和示例在以下许可下发布 MIT