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 ,该文件将被忽略。 |
file
和 directory
的函数 API 是相同的。它们接受一个 object
并返回一个 string
。它接受的对象具有 filename
、name
和 contentType
(均为字符串)。返回的 string
是路径。
filter
函数接受一个 object
并返回一个 boolean
值(或一个解析为 boolean
值的 promise)。它接受的对象具有 filename
、name
和 contentType
属性(均为字符串类型)。如果希望处理该文件流,则返回的 boolean
值为 true
。