peinhu / AetherUpload-Laravel

A Laravel package to upload large files 上传大文件的Laravel扩展包
GNU General Public License v2.0
919 stars 126 forks source link

想问下关于UploadController里面的一个代码的问题 #108

Open DaybreakY opened 2 years ago

DaybreakY commented 2 years ago
     // validate the data in header file to avoid the errors when network issue occurs
        if ( (int)($partialResource->chunkIndex) !== (int)$chunkIndex - 1 ) {
            return Responser::returnResult($result);
        }
   就关于源码里面这段代码的情况,没太能理解这个判断的意思。所以就是实例化类中partialResource里面的chunkIndex和前端接受的index不一致的时候,是不需要报错的吗?
peinhu commented 2 years ago

// validate the data in header file to avoid the errors when network issue occurs
// 验证header文件中的数据以防止网络问题发生时报错
这个应该是断线续传时防止出错的,网络不好时可能会发生上传成功但返回失败,此时实际已经上传成功,当网络恢复时,浏览器又会自动重传这部分内容,如果不阻止会出现问题,正常情况下不会进到这里。

DaybreakY commented 2 years ago

所以就是说明$partialResource->chunkIndex这块的计算是始终对的,但是可能由于网络的问题,前端传过来的index可能会有重复?所以通过这块来避免重传。所以一般来说是不会出现$partialResource->chunkIndex<index的情况,只是会出现$partialResource->chunkIndex>index。是这么理解吗?

peinhu commented 2 years ago

正常情况下不会出问题,$partialResource->chunkIndex和$chunkIndex - 1是相等的,当不相等的时候,说明前后端数据不一致了,需要采取措施,目前这个仅用于网络不好的时候避免重复上传文件块。

peinhu commented 2 years ago

你可以对比,删掉这部分代码和保留这部分代码,在上传文件网络中断后恢复情况下的区别。