0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptでアップロードしたファイルのマジックナンバーを取得

Posted at

やりたいこと

Inputタグに対してファイルがアップロードした際に、JavaScriptでアップロードしたファイルのマジックナンバーを取得し画面に表示したい

やり方

※ファイルの拡張子を変更しても、マジックナンバーは変わらない

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ファイルのマジックナンバー取得</title>
</head>
<body>
  <h1>ファイルのマジックナンバー表示</h1>

  <input type="file" id="fileInput">
  <p id="magicNumberDisplay">マジックナンバー: なし</p> <!-- 表示用の要素 -->

  <script>
    const fileInput = document.getElementById('fileInput');
    const magicNumberDisplay = document.getElementById('magicNumberDisplay');

    fileInput.addEventListener('change', function(event) {
      const file = event.target.files[0]; // 最初のファイルを取得
      if (file) {
        const reader = new FileReader();
        
        reader.onload = function(e) {
          const arrayBuffer = e.target.result;
          const uint8Array = new Uint8Array(arrayBuffer).subarray(0, 4); // 先頭4バイトを取得
          let magicNumber = "";
          
          // 16進数に変換してマジックナンバーとして表示
          for (let i = 0; i < uint8Array.length; i++) {
            magicNumber += uint8Array[i].toString(16).padStart(2, '0') + " ";
          }
          
          magicNumberDisplay.textContent = 'マジックナンバー: ' + magicNumber.trim(); // 画面に表示
        };

        // ファイルの先頭部分をArrayBufferとして読み込む
        reader.readAsArrayBuffer(file.slice(0, 4)); // 先頭4バイトを取得
      } else {
        magicNumberDisplay.textContent = 'マジックナンバー: なし'; // ファイルが未選択の場合
      }
    });
  </script>
</body>
</html>

こんな感じです
image.png

参考サイト

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?