我使用以下函数加载大文件(+500mb);我无法分割此文件,因为它是由另一个实体提供的,并且文件内容很难分割成更小的块;
如果我使用 Firefox,则响应将填充文件的内容,但是如果我在 Edge 中对同一文件使用相同的功能,则响应为空; ReadyState 为 4,Status 为 200 但响应为空;
我也使用了fetch API,结果是一样的;没有回复内容;
function loadFile(url, ok, err) {
var request = new XMLHttpRequest();
request.overrideMimeType('text/plain');
request.open('GET', url + (/\?/.test(url) ? '&' : '?') + new Date().getTime(), true);
request.addEventListener(
'load',
function (event) {
var response = event.target.response;
if (this.status === 200) {
if (ok) {
ok(response);
}
} else if (this.status === 0) {
// Some browsers return HTTP Status 0 when using non-http protocol
// e.g. 'file://' or 'data://'. Handle as success.
console.warn('loadFile: HTTP Status 0 received.');
if (ok) {
ok(response);
}
} else {
if (err) {
err(event);
}
}
},
false
);
request.addEventListener(
'error',
function (event) {
if (err) {
err(event);
}
},
false
);
request.send(null);
}
这是 XMLHttp 类的限制。我的建议是使用流并获取 api。 检查文档:https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/getReader