当前位置: 首页 > wzjs >正文

近期国际军事新闻网奇seo赚钱培训

近期国际军事新闻,网奇seo赚钱培训,政府网站建设依赖,网页设计网站建设过程报告个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–分片上传三–生成文件唯一标识(文件哈希)​四–断点续传 & 秒传五–分片上传(并发控制)​六–服务端合并分片​七–优化​八–总结​ 大文件上传的核心…

个人博客:haichenyi.com。感谢关注

一. 目录

  • 一–目录
  • 二–分片上传
  • 三–生成文件唯一标识(文件哈希)​
  • 四–断点续传 & 秒传
  • 五–分片上传(并发控制)​
  • 六–服务端合并分片​
  • 七–优化​
  • 八–总结​

  大文件上传的核心痛点是:文件过大,用户网络环境不稳定,服务器压力过大,容易中断,用户体验极差。只要解决这几个问题就行了。其实,最重要的一个问题就是文件过大。文件太大了,我们就分成几份上传就行了。这就是分片。

大文件上传的核心流程​
​​1. ​​前端分片​​ → 2. ​​计算文件唯一标识​​ → 3. ​​上传分片​​ → 4. ​​服务端合并分片​​ → 5. ​​完整性校验​

二. 分片上传

  将大文件分割成多个固定的小文件,减少单次请求的压力。举个栗子:100M的文件,分成10份,每个10M,这样就可以解决问题。核心代码如下

//主要就是File.slice
function createFileChunks(file, chunkSize = 10 * 1024 * 1024) {//分片数组const chunks = []//文件总大小const fileSize = file.sizelet start = 0while (start < fileSize) {//单个分片let chunk = {//文件数据chunk: file.slice(start, start + fileSize),//索引,用于文件合并时的顺序index: chunks.length}chunks.push(chunk)start += chunkSize}return chunks
}

三. 生成文件唯一标识(文件哈希)

  使用文件内容生成唯一标识,用于标识文件,实现秒传和断点续传。代码如下

function calculateFileHash(file) {return new Promise((resolve, reject) => {const reader = new FileReader();const spark = new SparkMD5.ArrayBuffer();reader.readAsArrayBuffer(file);reader.onload = (e) => {spark.append(e.target.result);const hash = spark.end();resolve(hash);};})
}

四. 断点续传 & 秒传

秒传: 在上传之前,检查服务端是否存在已经有相同哈希值的文件,有则跳过,没有,则上传
断点续传: 上传前,检查已经上传的分片列表,跳过已上传的分片

五. 分片上传(并发控制)

使用Promise池控制并发数(如同时上传3个分片),避免浏览器阻塞。

async function uploadChunks(chunks, fileHash, concurrency = 3) {const pool = new Set(); // 并发池for (const { chunk, index } of chunks) {const formData = new FormData();formData.append('chunk', chunk);formData.append('hash', fileHash);formData.append('index', index);const task = fetch('/api/upload-chunk', {method: 'POST',body: formData,}).then(() => {pool.delete(task);});pool.add(task);if (pool.size >= concurrency) {await Promise.race(pool); // 等待任意任务完成}}await Promise.all(pool); // 等待剩余任务完成
}

六. 服务端合并分片

当文件分片全都上传完成之后,前端触发文件合并逻辑,服务端合并文件。我们上传文件分片的时候上传了文件的hash值和索引。直接按照文件的hash值过滤出同一个文件的分片,然后按照索引,一次写入file即可。

七. 优化​

  1. 分片上传进度显示​。
  2. 错误重试机制​,为每个分片上传添加重试逻辑(最多3次)。
  3. 浏览器本地持久化,使用localStorage或IndexedDB保存上传状态,页面刷新后恢复。

八. 总结

大文件上传的核心在于​​分治策略​​:

  • 分片​​:将大问题拆解为小任务
  • 断点续传​​:增强容错能力
  • 并发控制​​:平衡速度与稳定性
http://www.dtcms.com/wzjs/368675.html

相关文章:

  • 网站海外推广方案谷歌seo网站推广
  • 专业品牌网站设计公司优化关键词首页排行榜
  • 如保做网站赢利整站优化报价
  • 网站开发工程师的经验免费个人网站平台
  • 如何网络推广运营深圳网站优化公司
  • 哪个网站做二手车买卖网络营销案例
  • 进一步加强区门户网站建设管理推广方案策略怎么写
  • 邯郸做网站seo网络营销招聘
  • 什么网站做批发最便宜网络公司网站模板
  • 网站建设 签约信息郑州搜索引擎优化
  • 网站搭建后提示建设中网站开发工具
  • 网站建设 柳州湖州seo排名
  • 交友网站模板下载做seo需要用到什么软件
  • 网站代码在哪里写企业宣传ppt
  • 毕业设计做视频网站好做么自动收录
  • 福建省建设执业注册中心网站沈阳黄页88企业名录
  • 昆明网站建设索王道下拉个人网页在线制作
  • 把手机网站做成app企业网站运营推广
  • 做网站维护工商经营范围是什么怎么制作一个网站5个网页
  • 广州制作网站报价南京百度网站推广
  • 工厂做网站百度问答平台入口
  • 深圳市建工建设集团有限公司公司seo是什么级别
  • 网站建设管理规范电子商务网站推广策略
  • 营销型网站建设域名是站长统计app软件下载2021
  • 营销型企业网站分析与诊断江西短视频seo搜索报价
  • 南通网站开发公司网盘资源搜索神器
  • wordpress开启子站做网站排名优化的公司
  • 网站建设 业务走下坡最火的推广平台
  • 网站建设风险的特征产品经理培训
  • 做网站挣钱么营销推广app