XMLHttpRequest() 响应在 Edge 中为空,但在 Firefox 中则不然

问题描述 投票:0回答:1

我使用以下函数加载大文件(+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);
    }
javascript xmlhttprequest response
1个回答
0
投票

这是 XMLHttp 类的限制。我的建议是使用流并获取 api。 检查文档:https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/getReader

© www.soinside.com 2019 - 2024. All rights reserved.