kokoichi206 / routines

0 stars 0 forks source link

画像が不正ファイルの時に実行が失敗する #22

Open kokoichi206 opened 8 months ago

kokoichi206 commented 8 months ago

問題は2つ

kokoichi206 commented 8 months ago

Line Notify

https://notify-bot.line.me/doc/ja/

imageFile 省略可能 File LINE上の画像サーバーにアップロードします。対応している画像形式は、png, jpegです。

kokoichi206 commented 8 months ago

PNG のマジックナンバーをチェックする

Portable Network Graphics https://en.wikipedia.org/wiki/PNG

function checkPNG(file) {
  const reader = new FileReader();

  // ファイルの最初の8バイトを読み込む
  const blob = file.slice(0, 8);
  reader.readAsArrayBuffer(blob);

  reader.onloadend = function (e) {
    if (e.target.readyState === FileReader.DONE) {
      const arr = new Uint8Array(e.target.result);
      if (
        arr[0] === 0x89 &&
        arr[1] === 0x50 &&
        arr[2] === 0x4e &&
        arr[3] === 0x47 &&
        arr[4] === 0x0d &&
        arr[5] === 0x0a &&
        arr[6] === 0x1a &&
        arr[7] === 0x0a
      ) {
        console.log("This is a PNG file.");
        return true;
      } else {
        console.log("This is not a PNG file.");
        return false;
      }
    }
  };
}