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 ,文件将被忽略。 |
file
和 directory
的函数 API 相同。它们接受一个 对象
并返回一个 字符串
。它接受的对象具有 filename
、name
和 contentType
(都是字符串)。返回的 字符串
是路径。
filter
函数接受一个 对象
并返回一个 布尔值
(或解析为 布尔值
的 Promise)。它接受的对象具有 filename
、name
和 contentType
(都是字符串)。返回的 布尔值
如果您想处理该文件流,则为 true
。