非常感谢任何关注此问题和有帮助的回答的人。
我正在探索尝试将文本文件从外部站点加载到我的站点的可能性。文本文件已使用gzip压缩或缩小,因此路径看起来像https://host/filename.txt.gz
我尝试使用XMLHttpRequest加载内容,然后尝试使用此https://github.com/augustl/js-inflate库对内容进行解压缩/充气。响应的内容类型为Application / Octet-stream。
所以,我的问题是无论responseText是否已解码,产生的许多字符都是“替换字符”(代码65533或。)。据我了解,这是在解码器无法处理字节序列时产生的。
我尝试解码/解压缩的文本文件当然是有效的,因为如果我下载它们,则可以将其解压缩并查看得很好。
var request = new XMLHttpRequest();
request.open('GET', 'https://host.something/filename.txt.gz');
request.onload = function() {
// the request text is all, there, looking like ��`�P GSE43615_non_normalized.txt t�I�,A�$���}���yXFf����D��...
var infwated = JSInflate.inflate(request.responseText); // (note: tried to base64decode the response first in case that's it. it doesn't seem to be)
// the 'inflated' result comes back as an empty string.
// As I debug the JSInflate library, it appears the the library is looking for bytes to signal how the text should be processed.
// The code breaks out of the processing in the first conditional because the byte is not recognized
console.log(infwated || 'failed'); // it's 'failed'
}
request.send();
我希望我对此进行了解释,这样才有意义。所以,我的问题是:
我想做的是可能的吗? (强调可能而不是合理)
如果是这样,模糊的问题是,我如何读取响应以便可以对其进行处理和解压缩?更具体地说,如何以一种膨胀算法可以使用的方式从XMLHttpWebRequest中“读取”文本?
非常感谢您的帮助!
答案 0 :(得分:0)
确保使用正确的responseType。默认为“文本”,也许应该为“斑点”?