关于JS进行大文件分片上传碰到的问题

文章目录

  • 关于JS进行大文件分片上传碰到的问题
      • JS分片后的BLOB可能会被服务器拦截
          • 1、重新定义JS分片的容量
          • 2、对分片 BLOB 进行转码处理

关于JS进行大文件分片上传碰到的问题


前端大文件分片是采用JS的 blob.slice 进行分片处理,但是上传时,可能会被服务器上的D盾拦截,因为文件分片后可能会在分片段起始位置出现某些字符被D盾误认为非法(序列化),,导致服务端无法接收到数据,注意特别是Video文件。

JS分片后的BLOB可能会被服务器拦截

JS分片后的BLOB只是大文件中的部分内容,但是某些字符出现在BLOB的起始位置时,就会被服务器上的D盾误认为是非法的,这时上传就会出错,服务器会返回提示:【禁用】序列化。解决这个问题,可以采用的方法可能有很多种,这里我就讲一下两种方式;

1、重新定义JS分片的容量

假设 JS 分片的大小为 1024KB(1MB)时,上传被服务器拦截,这时我们改变 BLOB分片的大为 800KB或其它值,这样也能够解决问题,但是也不能完成避免问题的出现;

2、对分片 BLOB 进行转码处理

在 JS 分片取得 BLOB后,对BLOB进行转码处理,就可以完全避免被拦截的问题出现;

前端JS代码:

	//文件分片
	chunk = blob.slice(start, end, 'image/png')

你可能感兴趣的:(php,Jquery,javascript,javascript,前端,大文件分片上传)