uniapp如何获取文件大小
在uniapp中,如何获取本地文件或网络文件的大小?例如选择文件后需要判断文件大小是否符合要求,或者下载文件前想获取远程文件的大小限制下载。能否通过uni.chooseFile或其他API实现?
2 回复
在uniapp中,获取文件大小可以通过uni.getFileInfo()方法实现。传入文件路径,在success回调中获取size属性,单位为字节。
在uni-app中获取文件大小的方法取决于文件来源,以下是常见场景的实现方式:
1. 选择本地文件后获取大小
// 选择文件
uni.chooseFile({
count: 1,
success: (res) => {
const file = res.tempFiles[0]
const fileSize = file.size // 文件大小(字节)
const fileSizeKB = (file.size / 1024).toFixed(2) // 转换为KB
const fileSizeMB = (file.size / 1024 / 1024).toFixed(2) // 转换为MB
console.log(`文件大小:${fileSize} 字节`)
console.log(`文件大小:${fileSizeKB} KB`)
console.log(`文件大小:${fileSizeMB} MB`)
}
})
2. 通过文件路径获取大小
// 获取文件信息
uni.getFileInfo({
filePath: '文件路径',
success: (res) => {
console.log('文件大小:', res.size) // 字节
}
})
3. 上传文件时获取大小
uni.uploadFile({
url: '上传地址',
filePath: '文件路径',
name: 'file',
success: (uploadRes) => {
// 在上传前通过chooseFile或getFileInfo获取大小
}
})
4. 实用工具函数
// 格式化文件大小显示
function formatFileSize(bytes) {
if (bytes === 0) return '0 B'
const k = 1024
const sizes = ['B', 'KB', 'MB', 'GB']
const i = Math.floor(Math.log(bytes) / Math.log(k))
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]
}
// 使用示例
const size = formatFileSize(2048576) // 返回 "1.95 MB"
注意事项:
- 文件大小单位是字节(Byte)
- 1KB = 1024字节,1MB = 1024KB
- 注意不同平台的文件路径获取方式可能不同
选择适合你具体使用场景的方法即可获取文件大小。

