suchen
HeimWeb-Frontendjs-TutorialSo verwenden Sie HTML5 -Datei Drag & Drop

detaillierte Erläuterung von HTML5 Drag & Drop -Datei Upload: Client -Dateiverarbeitung und asynchroner Server -Upload

How to Use HTML5 File Drag and Drop

Kernpunkte

  • HTML5 unterstützt das Ziehen und Ablegen von Dateien in Webseitenelementen und die Analyse von Drag-and-Drop-Dateien in JavaScript, Laden und Parsen von Dateien auf dem Client, asynchrone Dateien asynchron auf dem Server mit XMLHTTPREQUEST2 und grafischem Fortschritt während des Hochladens .
  • Browserunterstützung kann aufgrund der Verwendung der neuesten HTML5 -Technologie uneinheitlich sein. Aktuelle Versionen von Firefox und Chrome unterstützen alle Funktionen, während Opera, IE und Safari -Unterstützung überhaupt begrenzt oder gar nicht unterstützt werden.
  • Um die Datei Drag & Drop zu aktivieren, müssen JavaScript -Ereignisse an das Dateieingabeelement und das Element #Filedrag angehängt werden. Das Element #Filedrag sollte ebenfalls angezeigt und die Schaltfläche zur Einreichung von Formularen versteckt werden.
  • W3C -Datei -API enthält einige Objekte für Dateioperationen, einschließlich FileList, Datei und FileReader, mit denen Arrays ausgewählten Dateien, einzelne Dateien und für das Lesen von Dateidaten auf dem Client und in JavaScript verwendet werden können.

Drag & Drop -Desktop -Dateien in den Browser ist eines der ultimativen Ziele der Integration von Webanwendungen. Dies ist der erste Teil einer vierteiligen Reihe von Artikeln, in denen: 1. DRAG & DROP-Dateien in Webelementen aktivieren; V. .

Browserkompatibilität Herausforderung

Vor dem Start umfasst dieses Tutorial einige der neuesten HTML5 -Technologien, sodass die Unterstützung voraussichtlich ungleichmäßig ist. Der Code funktioniert jetzt, aber die API kann sich ändern und der Browser entwickelt sich weiter. - Die neuesten Versionen von Firefox und Chrome unterstützen alle Funktionen und laufen perfekt. - Opera kann Dateien in JavaScript analysieren, implementiert jedoch keine Datei Drag & Drop und XMLHTTPrequest2 Upload. - Die Desktop -Versionen von IE und Safari unterstützen keine APIs. - Apple hat HTML -Datei -Upload -Formulare auf iPhone- und iPad -Versionen von Safari deaktiviert. weiß jemand warum?

Bitte beachten Sie, dass mein Code das grundlegende Konzept zeigt. Es gibt nur sehr wenige Fehlerprüfungen und Sie müssen sich für Ihr Produktionssystem einstellen.

html und css

Dies ist ein Standardformular mit Dateieingangstyp. Die einzige HTML5 -Funktion ist die Eigenschaft "Mehrfach", mit der der Benutzer eine beliebige Anzahl von Dateien auswählen kann. Wir laden Dateien auf den Server hoch, das PHP ausgeführt, aber der Code ist fast gleich, unabhängig davon, welche Technologie Sie verwenden. Der Wert Hidden MAX_FILE_SIZE gibt 300.000 Bytes an - PHP verwendet diesen Wert. Wir überprüfen ihn jedoch auch im Client, um das Hochladen großer Dateien zu verhindern.

<fieldset><legend>HTML文件上传</legend>
<div>
  <input type="file" id="fileselect" name="fileselect[]" multiple="multiple">
  <label for="fileselect">选择要上传的文件:</label>
  <div id="filedrag">或将文件拖放到此处</div>
</div>
<input type="submit" value="上传文件" id="submitbutton">
</fieldset>
<div id="messages">状态信息</div>

Das FileDrag -Element wird als Drag & Drop -Speicherort unserer Datei verwendet. Dieses Element ist in CSS versteckt, aber wenn Drag & Drop unterstützt wird, wird es in JavaScript aktiviert:

#filedrag {
    display: none;
    font-weight: bold;
    text-align: center;
    padding: 1em 0;
    margin: 1em 0;
    color: #555;
    border: 2px dashed #555;
    border-radius: 7px;
    cursor: default;
}

#filedrag.hover {
    color: #f00;
    border-color: #f00;
    border-style: solid;
    box-shadow: inset 0 3px 4px #888;
}

Wir definieren auch eine .hover -Klasse, die den Stil ändert, wenn der Benutzer eine Datei auf ein Element schleppt. Der Browser gilt nicht an: Hover -Stil in diesem Fall, aber wenn das Ereignis auftritt, können wir mit JavaScript Klassen hinzufügen.

Datei -API

W3C -Datei -API bietet einige Objekte. Wir werden verwenden:- Filelist: Ein Array, das die ausgewählte Datei darstellt. - Datei: Repräsentiert eine einzelne Datei. - FileReader: Eine Schnittstelle, mit der wir Dateidaten im Client lesen und in JavaScript verwenden können.

angehängtes JavaScript -Ereignis

Es ist Zeit, JavaScript zu verwenden. Wir verwenden keine JavaScript -Bibliothek. Um unsere typisierenden Finger zu speichern

// 通过ID获取元素
function $id(id) {
    return document.getElementById(id);
}

// 输出信息
function Output(msg) {
    var m = $id("messages");
    m.innerHTML = msg + m.innerHTML;
}
Wir werden nun überprüfen, ob die Datei -API verfügbar ist, und rufen Sie die Funktion init () auf:

init () Funktion: 1. Legen Sie den Ereignishörer für das Dateieingabeelement fest. 2. Zeigen Sie #Filedrag -Element. 3. Setzen Sie die Hörer "Dragover" und "DragLeave" Event -Ereignisse, um den Stil der #Filedrag -Elemente zu ändern. 4. Setzen Sie den "Drop" -Ereigungshörer für das Element #filedrag. 5. Ausblenden Sie die Schaltfläche "Formulare" - Da wir die ausgewählte Datei analysieren und hochladen, wird sie nicht benötigt.
// 调用初始化文件
if (window.File && window.FileList && window.FileReader) {
    Init();
}

// 初始化
function Init() {

    var fileselect = $id("fileselect"),
        filedrag = $id("filedrag"),
        submitbutton = $id("submitbutton");

    // 文件选择
    fileselect.addEventListener("change", FileSelectHandler, false);

    // XHR2是否可用?
    var xhr = new XMLHttpRequest();
    if (xhr.upload) {

        // 文件拖放
        filedrag.addEventListener("dragover", FileDragHover, false);
        filedrag.addEventListener("dragleave", FileDragHover, false);
        filedrag.addEventListener("drop", FileSelectHandler, false);
        filedrag.style.display = "block";

        // 移除提交按钮
        submitbutton.style.display = "none";
    }

}

Sie können wählen, ob Sie die Dateieingabedelemente ausblenden können, wenn die Datei Drag & Drop unterstützt wird. Persönlich bevorzuge ich es, beide Optionen anzubieten, da Drag & Drop einige Benutzerfreundlichkeitsprobleme mit sich bringt. Die XMLHTTPrequest.Upload -Methode -Methode kann Probleme in der Oper verhindern. Der Browser unterstützt Datei, Filelist und FileReader, unterstützt jedoch keine Drag & Drop -Ereignisse oder XMLHTTPrequest2. So können Dateiinformationen angezeigt werden. Wir möchten jedoch nicht das Element #Filedrag anmelden oder die Schaltfläche Senden entfernen.

Datei Drag & Drop -Stil ändern

Einige Leute haben die Drag & Drop -Datei in ihren Webbrowsern erlebt. Tatsächlich können erfahrene Webbenutzer dies für unmöglich halten. Also haben wir ein Element verwendet, das "Drag & Drop -Dateien hier" erklärt. Wir möchten auch angeben, wann sie eine Datei an den Standort #Filedrag ziehen müssen, indem wir ihren Stil ändern:

// 文件拖放悬停
function FileDragHover(e) {
    e.stopPropagation();
    e.preventDefault();
    e.target.className = (e.type == "dragover" ? "hover" : "");
}
Analysieren Sie Drag & Drop oder ausgewählte Dateien

Unabhängig davon

Diese Funktion: 1. Rufen Sie agaEdraghover () auf, um den Schwebstil zu entfernen und das Browser -Ereignis abzubrechen. Dies ist entscheidend, da der Browser ansonsten versucht, die Datei anzuzeigen. 2. Holen Sie sich das filelistische Objekt. Dies erfolgt aus dem Dateieingangsfeld (e.target.files) oder dem #filedrag -Element (e.datatransfer.files). 3.. Schließlich schaltet die Funktion alle Dateiobjekte im Filelisten durch und übergibt sie als Parameter an die Funktion parsefile () ...

<fieldset><legend>HTML文件上传</legend>
<div>
  <input type="file" id="fileselect" name="fileselect[]" multiple="multiple">
  <label for="fileselect">选择要上传的文件:</label>
  <div id="filedrag">或将文件拖放到此处</div>
</div>
<input type="submit" value="上传文件" id="submitbutton">
</fieldset>
<div id="messages">状态信息</div>

Diese Funktion verwendet drei wichtigste schreibgeschützte Attribute, die vom Dateiobjekt angegeben sind, um Informationen auszugeben: -.name: Dateiname (ohne Pfadinformationen) -Typ: MIME -Typ, z. B. Bild/JPEG, Text/Plain usw. . -Size: Dateigröße (in Bytes).

Bitte anzeigen Sie sich die Demo -Seite in Firefox, Chrome oder Opera an (keine Drag & Drop -Unterstützung). Sie können auch Dateien herunterladen, um den Code zu überprüfen. Wir haben viel abgedeckt. In meinem nächsten Beitrag werden wir über erfahren, wie Sie HTML5- und JavaScript verwenden, um Drag & drop-Dateien zu öffnen Dieser Artikel wurde auch in armenische übersetzt, wenn Sie möchten Lesen Sie diesen Artikel und Sie werden Lernable lieben. Mitglieder können sofort auf alle E-Books und interaktiven Online-Kurse von SitePoint zugreifen, wie z. B. HTML5 und CSS3 in der realen Welt. Kommentare in diesem Artikel wurden geschlossen. Haben Sie Fragen zu HTML5? Warum nicht Fragen in unserem Forum stellen? FAQs über HTML5 -Datei Drag & Drop *

(Der folgende FAQ -Teil wurde aufgrund der Länge des Artikels weggelassen. Bei Bedarf können Sie eine Übersetzung des FAQ -Teils separat anfordern.)

Das obige ist der detaillierte Inhalt vonSo verwenden Sie HTML5 -Datei Drag & Drop. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Die Entwicklung von JavaScript: Aktuelle Trends und ZukunftsaussichtenDie Entwicklung von JavaScript: Aktuelle Trends und ZukunftsaussichtenApr 10, 2025 am 09:33 AM

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

Entmystifizieren JavaScript: Was es tut und warum es wichtig istEntmystifizieren JavaScript: Was es tut und warum es wichtig istApr 09, 2025 am 12:07 AM

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Ist Python oder JavaScript besser?Ist Python oder JavaScript besser?Apr 06, 2025 am 12:14 AM

Python eignet sich besser für Datenwissenschaft und maschinelles Lernen, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python ist bekannt für seine prägnante Syntax- und Rich -Bibliotheks -Ökosystems und ist für die Datenanalyse und die Webentwicklung geeignet. 2. JavaScript ist der Kern der Front-End-Entwicklung. Node.js unterstützt die serverseitige Programmierung und eignet sich für die Entwicklung der Vollstapel.

Wie installiere ich JavaScript?Wie installiere ich JavaScript?Apr 05, 2025 am 12:16 AM

JavaScript erfordert keine Installation, da es bereits in moderne Browser integriert ist. Sie benötigen nur einen Texteditor und einen Browser, um loszulegen. 1) Führen Sie sie in der Browser -Umgebung durch, indem Sie die HTML -Datei durch Tags einbetten. 2) Führen Sie die JavaScript -Datei nach dem Herunterladen und Installieren von node.js nach dem Herunterladen und Installieren der Befehlszeile aus.

Wie sende ich Benachrichtigungen, bevor eine Aufgabe in Quartz beginnt?Wie sende ich Benachrichtigungen, bevor eine Aufgabe in Quartz beginnt?Apr 04, 2025 pm 09:24 PM

So senden Sie im Voraus Aufgabenbenachrichtigungen in Quartz Wenn der Quartz -Timer eine Aufgabe plant, wird die Ausführungszeit der Aufgabe durch den Cron -Ausdruck festgelegt. Jetzt...

Wie erhalten Sie in JavaScript Parameter einer Funktion auf einer Prototypkette in einem Konstruktor?Wie erhalten Sie in JavaScript Parameter einer Funktion auf einer Prototypkette in einem Konstruktor?Apr 04, 2025 pm 09:21 PM

So erhalten Sie die Parameter von Funktionen für Prototyp -Ketten in JavaScript in JavaScript -Programmier-, Verständnis- und Manipulationsfunktionsparametern auf Prototypungsketten ist eine übliche und wichtige Aufgabe ...

Was ist der Grund für das Versagen von Vue.js Dynamic Style -Verschiebung im WeChat Mini -Programm Webview?Was ist der Grund für das Versagen von Vue.js Dynamic Style -Verschiebung im WeChat Mini -Programm Webview?Apr 04, 2025 pm 09:18 PM

Analyse des Grundes, warum der dynamische Verschiebungsfehler der Verwendung von VUE.JS im WeChat Applet Web-View Vue.js verwendet ...

So implementieren Sie gleichzeitige GET -Anforderungen für mehrere Links in Tampermonkey und bestimmen die Rückgabergebnisse in Sequenz?So implementieren Sie gleichzeitige GET -Anforderungen für mehrere Links in Tampermonkey und bestimmen die Rückgabergebnisse in Sequenz?Apr 04, 2025 pm 09:15 PM

Wie kann ich gleichzeitige Anfragen für mehrere Links und nach Abfolge der Rückgabeergebnisse beurteilen? In Tampermonkey -Skripten müssen wir oft mehrere Ketten verwenden ...

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung