Inhaltsverzeichnis
Wie prüfe ich den MIME-Typ einer Datei vor dem Hochladen mit JavaScript?
Die Bühne bereiten
Schritt 1: Dateiinformationen extrahieren
Schritt 2: MIME-Typ bestimmen
Gemeinsame Dateisignaturen
Demo Showcase
Vorteile der clientseitigen MIME-Typprüfung
Fazit
Heim Web-Frontend js-Tutorial Wie kann ich den MIME-Typ einer Datei vor dem Hochladen mit JavaScript überprüfen?

Wie kann ich den MIME-Typ einer Datei vor dem Hochladen mit JavaScript überprüfen?

Dec 12, 2024 pm 05:01 PM

How can I check a file's MIME type using JavaScript before uploading it?

Wie prüfe ich den MIME-Typ einer Datei vor dem Hochladen mit JavaScript?

Im digitalen Zeitalter ist das Hochladen von Dateien zu einem grundlegenden Aspekt von Webanwendungen geworden. Es ist von entscheidender Bedeutung, den MIME-Typ der hochgeladenen Dateien zu überprüfen, um sicherzustellen, dass sie den Erwartungen des Servers entsprechen und unnötige Ressourcenverschwendung zu vermeiden.

Trotz anfänglicher Skepsis ermöglicht uns JavaScript, die MIME-Typen von Dateien auf der Clientseite problemlos zu überprüfen. Dieser Artikel befasst sich mit den Anleitungen, ausgestattet mit einer praktischen Demonstration und einer umfassenden Liste weit verbreiteter Dateisignaturen.

Die Bühne bereiten

Bevor wir uns mit den technischen Details befassen, gehen wir zunächst darauf ein eine Stiftung gründen. Datei- und Blob-APIs sind für die Dateibearbeitung in JavaScript unverzichtbar. Glücklicherweise genießen diese APIs breite Unterstützung in allen gängigen Browsern.

Schritt 1: Dateiinformationen extrahieren

Um Informationen über ausgewählte Dateien abzurufen, können wir Eingabeelemente nutzen:

var input = document.getElementById("file-input");

input.addEventListener("change", function(e) {
  var files = e.target.files;
  
  // Iterate through the files
  for (var i = 0; i < files.length; i++) {
    console.log("Filename: " + files[i].name);
    console.log("Type: " + files[i].type);
    console.log("Size: " + files[i].size + " bytes");
  }
});
Nach dem Login kopieren

Schritt 2: MIME-Typ bestimmen

Es gibt zwei Ansätze, den MIME zu bestimmen Typ:

  • Schnellmethode: Das JavaScript-Blob-Objekt stellt von Natur aus eine MIME-Typ-Eigenschaft bereit:
var blob = files[i]; // File from Step 1
console.log(blob.type);
Nach dem Login kopieren
  • Header Inspektionsmethode: Für einen zuverlässigeren Ansatz können wir die Datei überprüfen Header:
var blob = files[i]; // File from Step 1
var fileReader = new FileReader();

fileReader.onloadend = function(e) {
  var header = "";
  
  // Extract the first four bytes of the file
  var arr = (new Uint8Array(e.target.result)).subarray(0, 4);
  for (var i = 0; i < arr.length; i++) {
    header += arr[i].toString(16);
  }
  
  console.log(header);
};

fileReader.readAsArrayBuffer(blob);
Nach dem Login kopieren

Als nächstes müssen wir den erhaltenen Header mit bekannten Dateisignaturen abgleichen, um den MIME-Typ zu bestimmen.

Gemeinsame Dateisignaturen

File Type Signature (hexadecimal)
PNG 89504e47
GIF 47494638
JPEG ffd8ffe0, ffd8ffe1, ffd8ffe2

Sobald der MIME-Typ identifiziert ist, können wir den Datei-Upload basierend auf vordefinierten Kriterien akzeptieren oder ablehnen.

Demo Showcase

Um die besprochenen Konzepte zu veranschaulichen, hier eine funktionierende Demo:

// Get file header
function getFileHeader(blob, callback) {
  var fileReader = new FileReader();
  fileReader.onloadend = function(e) {
    var arr = (new Uint8Array(e.target.result)).subarray(0, 4);
    var header = "";
    for (var i = 0; i < arr.length; i++) {
      header += arr[i].toString(16);
    }
    callback(header);
  };
  fileReader.readAsArrayBuffer(blob);
}

// Determine MIME type
function getMimeType(header) {
  switch (header) {
    case "89504e47":
      return "image/png";
    case "47494638":
      return "image/gif";
    case "ffd8ffe0":
    case "ffd8ffe1":
    case "ffd8ffe2":
      return "image/jpeg";
    default:
      return "unknown";
  }
}

// Handle file selection
document.getElementById("file-input").addEventListener("change", function(e) {
  var file = e.target.files[0];
  getFileHeader(file, function(header) {
    var mimeType = getMimeType(header);
    console.log("File: " + file.name);
    console.log("MIME Type: " + mimeType);
  });
});
Nach dem Login kopieren

Vorteile der clientseitigen MIME-Typprüfung

  1. Reduzierte Serverlast : Eliminiert unnötige Serveranfragen für ungültig Dateien.
  2. Verbesserte Benutzererfahrung: Verhindert frustrierende Fehlermeldungen und Verzögerungen, die durch das Hochladen inkompatibler Dateien verursacht werden.
  3. Robuste Dateivalidierung: Stellt sicher, dass Dateien eingehalten werden Servererwartungen, wodurch Sicherheit und Integrität minimiert werden Risiken.

Fazit

JavaScript bietet ein wirksames Mittel zur Überprüfung von Datei-MIME-Typen auf der Clientseite und ergänzt die serverseitige Validierung. Durch die Nutzung der Datei- und Blob-APIs können Entwickler den MIME-Typ einer Datei effizient bestimmen und so die Sicherheit, Effizienz und Benutzererfahrung ihrer Webanwendungen verbessern.

Das obige ist der detaillierte Inhalt vonWie kann ich den MIME-Typ einer Datei vor dem Hochladen mit JavaScript überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Hot-Tools-Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Ersetzen Sie Stringzeichen in JavaScript

JQuery überprüfen, ob das Datum gültig ist JQuery überprüfen, ob das Datum gültig ist Mar 01, 2025 am 08:51 AM

JQuery überprüfen, ob das Datum gültig ist

JQuery Get Element Polsterung/Rand JQuery Get Element Polsterung/Rand Mar 01, 2025 am 08:53 AM

JQuery Get Element Polsterung/Rand

Top 5 Datum Manipulation JS -Plugins Top 5 Datum Manipulation JS -Plugins Feb 28, 2025 am 12:34 AM

Top 5 Datum Manipulation JS -Plugins

10 lohnt 10 lohnt Mar 01, 2025 am 01:29 AM

10 lohnt

10 JQuery Accords Registerkarten 10 JQuery Accords Registerkarten Mar 01, 2025 am 01:34 AM

10 JQuery Accords Registerkarten

JQuery fügen Sie Scrollbar zu Div hinzu JQuery fügen Sie Scrollbar zu Div hinzu Mar 01, 2025 am 01:30 AM

JQuery fügen Sie Scrollbar zu Div hinzu

Benutzerdefinierte Google -Search -API -Setup -Tutorial Benutzerdefinierte Google -Search -API -Setup -Tutorial Mar 04, 2025 am 01:06 AM

Benutzerdefinierte Google -Search -API -Setup -Tutorial

See all articles