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
  • 注意不同平台的文件路径获取方式可能不同

选择适合你具体使用场景的方法即可获取文件大小。

回到顶部