Heim > Web-Frontend > js-Tutorial > Wie können Browser MIME-Typen vor dem Hochladen von Dateien zuverlässig prüfen?

Wie können Browser MIME-Typen vor dem Hochladen von Dateien zuverlässig prüfen?

DDD
Freigeben: 2024-12-02 04:12:14
Original
221 Leute haben es durchsucht

How Can Browsers Reliably Check MIME Types Before File Upload?

Wie die browserseitige MIME-Überprüfung funktioniert und warum sie schwierig ist

JavaScript kann Datei-MIME-Typen vor dem Hochladen ermitteln, diese aber validieren auf der Serverseite aus Sicherheitsgründen.

Schritt 1: Verwenden Sie FileReader API

So erhalten Sie Dateiinformationen:

var files = document.getElementsByTagName('input')[0].files;
console.log(files[0].type);
Nach dem Login kopieren

Schritt 2: MIME-Typ extrahieren

Methode 1: Verwenden von Blob (Kann durch Datei getäuscht werden Erweiterung)

console.log(files[0].type);
Nach dem Login kopieren

Methode 2: Header-Inspektion (Zuverlässiger)

var fileReader = new FileReader();
fileReader.onloadend = function(e) {
  var header = (new Uint8Array(e.target.result)).subarray(0, 4).toString(16);
  switch (header) {
    case "89504e47":
      type = "image/png";
      break;
    case "47494638":
      type = "image/gif";
      break;
    case "ffd8ffe0":
    case "ffd8ffe1":
    case "ffd8ffe2":
      type = "image/jpeg";
      break;
    default:
      type = "unknown";
      break;
  }
};
fileReader.readAsArrayBuffer(files[0]);
Nach dem Login kopieren

Hinweis:

  • Dateierweiterungen können gefälscht werden, sodass die Header-Inspektion zuverlässiger ist.
  • Magische Zahlen können variieren je nach Dateityp.
  • Serverseitige Validierung ist für die Sicherheit immer noch unerlässlich.

Das obige ist der detaillierte Inhalt vonWie können Browser MIME-Typen vor dem Hochladen von Dateien zuverlässig prüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage