公司在做视频处理的时候,要实现预览上传的视频并下载之类的操作,对大文件走阿里云的OSS上传。阿里云 OSS(对象存储服务)提供了分片上传功能,允许将大文件切分为多个小片段进行并行上传,以提高上传速度和稳定性。下面是分片上传的详细过程:

  1. 初始化上传:首先,客户端向 OSS 发起一个初始化上传的请求。在请求中,需要指定上传的目标文件名、文件类型和其他可选参数。OSS 会返回一个唯一的上传 ID,用于后续的分片上传操作。
  2. 分片切分:客户端将待上传的文件切分为多个固定大小的分片(通常为 1MB 或其他指定大小)。最后一个分片的大小可以小于设定的大小。
  3. 上传分片:客户端按照顺序将每个分片上传到 OSS。每个分片都需要包含上传 ID、分片索引、分片数据和分片校验等信息。OSS 会验证每个分片的完整性,并将其存储在临时位置。
  4. 完成上传:当所有分片都上传完成后,客户端向 OSS 发起一个完成上传的请求,携带上传 ID 和已上传的分片列表。OSS 会根据上传 ID 和分片列表将分片合并成完整的文件,并将其持久化存储。
  5. 取消上传:如果在上传过程中遇到错误或需要取消上传,客户端可以向 OSS 发起一个取消上传的请求。OSS 会删除已上传的分片,释放相关资源。

这样我们按照步骤,直接调用填写阿里云封装好的接口,虽然已经被封装好,但我们要清除其中的逻辑。这里官方给了相关文档,自己可以预览下,适用前提是自己必须已经配置好了服务器,拿到了region、accessKeyId、 accessKeySecret等密钥。关于如何创建服务器,这里不做过多讲述,按照OSS开通流程,这里放个阿里官网的OSS开通视频教程,我们这里主要讲述如何实现上传,就不做过多讲述。这样才能识别自己的服务器,注意上传不需要填阿里的上传地址,都在你填写的信息里

2023最新阿里oss分片上传教程_初始化

2023最新阿里oss分片上传教程_初始化_02

同样的,官方的文档中给了相关示例:

2023最新阿里oss分片上传教程_上传_03

因为前端页面我用的vue写的,所以选择了node.js示例,当然,如果自己有其他选择,可以在文档中自己查看下。接下来我把我写的代码截取下来:

const OSS = require('ali-oss');

// 初始化 OSS 客户端
const client = new OSS({
  region: 'your-region', // OSS 存储区域
  accessKeyId: 'your-access-key-id',
  accessKeySecret: 'your-access-key-secret',
  bucket: 'your-bucket-name' // 存储桶名称
});

// 初始化上传
const initResult = await client.initMultipartUpload('your-object-key');
const uploadId = initResult.uploadId;

// 分片切分
const fileSize = 1024 * 1024 * 10; // 10MB
const filePath = 'your-file-path';
const fileStats = fs.statSync(filePath);
const totalSize = fileStats.size;
const partSize = Math.ceil(totalSize / fileSize);
const parts = [];

// 上传分片
for (let i = 0; i < partSize; i++) {
  const start = i * fileSize;
  const end = Math.min(start + fileSize, totalSize);
  const partNumber = i + 1;

  const partResult = await client.uploadPart('your-object-key', uploadId, partNumber, filePath, start, end);
  parts.push({
    partNumber: partNumber,
    etag: partResult.etag
  });
}

// 完成上传
await client.completeMultipartUpload('your-object-key', uploadId, parts);

// 取消上传
await client.abortMultipartUpload('your-object-key', uploadId);

实际使用时需要替换为你自己的阿里云 OSS 配置和文件信息。此外,还需要处理错误和异常情况,并进行适当的错误处理和重试机制,以确保上传的稳定性和可靠性。