yy-file-upload
v1.0.0
Published
文件上传工具,支持预签名URL上传
Maintainers
Readme
yy-file-upload
文件上传工具,支持预签名URL上传。
安装
npm install yy-file-upload使用
基础用法
import { uploadFile, getFileType, formatFileSize } from 'yy-file-upload';
// 上传文件
const result = await uploadFile({
file: fileObject,
getUploadInfo: async (params) => {
// 调用后端API获取上传信息
const response = await fetch('/api/upload/info', {
method: 'POST',
body: JSON.stringify(params)
});
return await response.json();
},
folder: 'knowledge',
onProgress: (percent) => {
console.log(`上传进度: ${percent}%`);
},
onStatusUpdate: async ({ object_key, status }) => {
// 更新上传状态
await fetch('/api/upload/status', {
method: 'POST',
body: JSON.stringify({ object_key, status })
});
}
});
if (result.success) {
console.log('上传成功:', result.download_url);
}直接上传到预签名URL
import { uploadToPresignedUrl } from 'yy-file-upload';
const result = await uploadToPresignedUrl({
file: fileObject,
uploadUrl: 'https://example.com/upload',
fields: {
'Content-Type': 'image/png'
},
onProgress: (percent) => {
console.log(`上传进度: ${percent}%`);
}
});文件类型检查
import { getFileType, formatFileSize } from 'yy-file-upload';
const fileInfo = getFileType(file);
console.log(fileInfo.type); // 'image', 'audio', 'video', 'pdf', 'document', 'file'
console.log(fileInfo.isImage); // true/false
const size = formatFileSize(file.size);
console.log(size); // '1.5 MB'API
uploadFile(options)
通用文件上传函数。
参数:
options.file(File) - 文件对象options.getUploadInfo(Function) - 获取上传信息的函数options.folder(string) - 文件夹名称,默认 'knowledge'options.expiryType(number) - 有效期类型,默认 1options.onProgress(Function) - 进度回调options.onStatusUpdate(Function) - 状态更新回调
返回值:
Promise<Object>- 上传结果
uploadToPresignedUrl(options)
上传文件到预签名URL。
参数:
options.file(File) - 文件对象options.uploadUrl(string) - 预签名上传URLoptions.fields(Object) - 表单字段(可选)options.onProgress(Function) - 进度回调(可选)
返回值:
Promise<Object>- 上传结果
getFileType(file)
检查文件类型。
参数:
file(File|string) - 文件对象或文件名
返回值:
Object- 文件类型信息
formatFileSize(bytes, decimals)
格式化文件大小。
参数:
bytes(number) - 字节数decimals(number) - 小数位数,默认 2
返回值:
string- 格式化后的文件大小
特性
- ✅ 支持预签名URL上传
- ✅ 上传进度回调
- ✅ 文件类型自动识别
- ✅ 文件大小格式化
- ✅ 状态更新支持
- ✅ TypeScript 支持
