这是我所说的幻数的链接: file magic
如何使用 JavaScript 远程读取文件的前几个字节(幻数)以确定它是否是图像文件?
JavaScript 主要是一种客户端语言,因此您不能简单地以编程方式从您自己的页面读取托管在其他站点上的文件。XMLHttpRequest
将让您检索远程数据,但这将检索整个文件,而不是前几个字节。做任何更花哨的事情都需要服务器端助手,例如 PHP 脚本或类似的。
您还应该知道,某些 HTTP 服务器无论如何都不允许您从输出中检索一定范围的字节——它们总是会返回整个文件。因此,即使使用 curl 或 wget 的 PHP 脚本,您也可能无法使其适用于所有远程站点:
是否可以使用 Linux 命令从 HTTP 服务器仅读取前 N 个字节?
(上面涵盖了命令行 curl,但结论是广泛适用的。)
编辑:Sergiu 指出将Range
标头添加到 anXMLHttpRequest
将起作用,至少对于某些服务器(范围标头对于 HTTP 1.1 是可选的)。但是,跨域图像检索仍需要进一步的支持,例如 CORS。
SO还有其他类似的问题。喜欢这个。
它可能会帮助您将图像读取为二进制数据。
您将需要读取整个图像,而不仅仅是前几个字节。这是 JavaScript 的限制。
您可以为此使用 XMLHttpRequest:
这对我有用:
var request = new XMLHttpRequest();
request.open('GET', '/download/logo.png');
request.setRequestHeader('Range', 'bytes=0-5');
request.responseType = 'arraybuffer'
request.addEventListener('load', function() {
console.log(new Uint8Array(request.response));
});
request.send();