You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将读取文件得到的Buffer拆分为10MB大小的分片用于服务端上传

Buffer 拆分为 10MB 分片实现方案

10MB 对应的字节数为 10 * 1024 * 1024 = 10485760,Node.js 原生 Buffer 自带的 slice 方法的操作单位就是字节,无需额外转换类型即可直接完成分片。

可直接运行的实现代码

const fs = require('fs')
// 固定分片大小为10MB,单位为字节
const CHUNK_SIZE = 10 * 1024 * 1024
const fileBuffer = fs.readFileSync('替换为你的实际文件路径')
const totalSize = fileBuffer.byteLength
const chunkList = []

let currentOffset = 0
while (currentOffset < totalSize) {
    // 处理最后一个分片不足10MB的情况
    const endOffset = Math.min(currentOffset + CHUNK_SIZE, totalSize)
    const singleChunk = fileBuffer.slice(currentOffset, endOffset)
    chunkList.push(singleChunk)
    currentOffset = endOffset
}

// 遍历分片列表即可逐个上传
chunkList.forEach((chunk, idx) => {
    console.log(`分片${idx + 1}大小:${chunk.byteLength}字节`)
    // 此处写入上传分片的逻辑
})

原尝试代码的问题说明

  • 无需将 Buffer 转换为 Uint16Array:Uint16Array 每个元素占2个字节,长度计算和字节数不匹配,反而会增加复杂度和出错概率
  • slice 方法的第二个参数直接按偏移量叠加分片大小计算即可,只需注意最后一个分片的结束位置不能超过文件总字节数

内容的提问来源于stack exchange,提问作者m-0-h

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:57:00