Javascript 使用XMLHttpRequest和auth digest以部分方式响应本机上载文件

Javascript 使用XMLHttpRequest和auth digest以部分方式响应本机上载文件,javascript,react-native,upload,xmlhttprequest,blob,Javascript,React Native,Upload,Xmlhttprequest,Blob,我正在尝试使用XMLHttpRequest()在服务器上上载localmp4/move文件。这是用react native编写的,在最终版本中,用户可以将任何大文件从其IOS/Android设备上载到服务器 该文件大约为1GB(可能为100MB到10GB) 对于70 mb以下的文件,我可以很容易地使用以下代码(以下)加载blob,然后使用以下代码将其切片并放到服务器上: 然后这是从回调处理中剥离的sendBlobPart func(此处不重要): 我正在从所有部分重建服务器上的文件,这对XMLH

我正在尝试使用XMLHttpRequest()在服务器上上载localmp4/move文件。这是用react native编写的,在最终版本中,用户可以将任何大文件从其IOS/Android设备上载到服务器

该文件大约为1GB(可能为100MB到10GB)

对于70 mb以下的文件,我可以很容易地使用以下代码(以下)加载blob,然后使用以下代码将其切片并放到服务器上:

然后这是从回调处理中剥离的sendBlobPart func(此处不重要):

我正在从所有部分重建服务器上的文件,这对XMLHttpRequest()创建的blob很好,但似乎XMLHttpRequest正在将整个文件加载到内存中,因此,例如,当尝试将1GB文件作为blob加载时,我发现内存不足错误,于是我寻找了几种解决方案,到目前为止,一切都不起作用,我发现了一个很有希望的特点:

因此,从1 GB文件创建Blob现在需要大约100毫秒,并且不消耗内存:

const Blob = RNFetchBlob.polyfill.Blob
let newBlob = new Blob(RNFetchBlob.wrap(obj['path']), {type: obj['mime']});
但新blob的结构与前一个不同(使用XMLHttpRequest中的前一个blob,我可以简单地将切片blob作为数据发送,它工作得很好,现在无论我如何处理新blob,我都无法在服务器上发送任何日期,所有请求都工作得很好,但服务器端接收到0字节

有没有人能提供一些提示/解决方案或想法来解决这个问题

下面我将添加这两个blob的结构,我可以看到它们非常不同(我在本例中使用了1.2MB文件,所以XML请求可以正常工作,不会像我所需的1GB文件那样崩溃):

当我考虑使用readStream和类似的解决方案时,我找不到一个选项让stream在上传完成时等待,或者从文件的50%开始

function sendBloblPart() {
    sendRequest = new digestAuthRequest('PUT', uri, usernameVal, passwordVal);
    sendRequest.request(function (data) {
    }, mainThis.fileUploadErrorHandler, blob.slice(startB, endB), true);
}
const Blob = RNFetchBlob.polyfill.Blob
let newBlob = new Blob(RNFetchBlob.wrap(obj['path']), {type: obj['mime']});