これがマジックナンバーの意味へのリンクです: ファイルマジック
JavaScript を使用してファイルの最初の数バイト (マジック ナンバー) をリモートで読み取り、画像ファイルかどうかを判断するにはどうすればよいですか?
これがマジックナンバーの意味へのリンクです: ファイルマジック
JavaScript を使用してファイルの最初の数バイト (マジック ナンバー) をリモートで読み取り、画像ファイルかどうかを判断するにはどうすればよいですか?
JavaScriptはメインのクライアント側言語であるため、他のサイトでホストされているファイルを自分のページからプログラムで単純に読み取ることはできません。XMLHttpRequest
リモートデータを取得できますが、最初の数バイトではなく、ファイル全体を取得します。もっと凝ったことをするには、サーバー側のヘルパー、たとえばPHPスクリプトなどが必要になります。
また、一部のHTTPサーバーでは、出力から一定範囲のバイトを取得できないことにも注意する必要があります。これらのサーバーは、常にファイル全体を返します。したがって、たとえばcurlやwgetを使用するPHPスクリプトを使用しても、これをすべてのリモートサイトで機能させることができない場合があります。
Linuxコマンドを使用してHTTPサーバーから最初のNバイトのみを読み取ることは可能ですか?
(上記はコマンドラインカールをカバーしていますが、結論は広く適用できます。)
編集:Sergiuは、少なくとも一部のサーバーでは、Range
ヘッダーをに追加すると機能することを指摘しています(RangeヘッダーはHTTP 1.1ではオプションです)。XMLHttpRequest
ただし、クロスドメイン画像検索には、CORSなどのさらなるサポートが必要です。
これには 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();
SOには他にも同様の質問があります。これのように。
イメージをバイナリ データとして読み取ると役立つ場合があります。
最初の数バイトだけでなく、イメージ全体を読み取る必要があります。これは JavaScript の制限です。