Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie den Datei-Drag-and-Drop-Upload

一个新手
Freigeben: 2017-10-19 09:13:48
Original
3317 Leute haben es durchsucht

Dateien ziehen und auswählen

Standardereignisse blockieren

Als ich zum ersten Mal anfing, wurde in diesem Beispiel erwähnt, dass Drag-bezogene Ereignisse im Dokument blockiert werden müssen Bei der standardmäßigen Verarbeitungsmethode für alle Ereignisse lautet der Code wie folgt:

$(document).on({ 
        dragleave:function(e){    //拖离 
            e.preventDefault(); 
        }, 
        drop:function(e){  //拖后放 
            e.preventDefault(); 
        }, 
        dragenter:function(e){    //拖进 
            e.preventDefault(); 
        }, 
        dragover:function(e){    //拖来拖去 
            e.preventDefault(); 
        } 
    });
Nach dem Login kopieren

Tatsächlich ist in unserem Datei-Upload der Bereich, der Drag & Drop akzeptiert, im Allgemeinen nur ein kleiner Bereich, daher habe ich ihn wie folgt vereinfacht


$drop.on("dragenter", function (e) {
    e.preventDefault();
    console.log("enter");
    $drop.addClass("hover");});$drop.on("dragleave drop", function (e) {
    e.preventDefault();
    console.log("leave");
    $drop.removeClass("hover");});$drop.on("dragover", function (e) {
    e.preventDefault();})
Nach dem Login kopieren

Und während des Eingabeereignisses wird dem Zielbereich ein Hover-Stil hinzugefügt, um den Akzeptanzbereich hervorzuheben
So implementieren Sie den Datei-Drag-and-Drop-Upload
Standardmäßig hierin In diesem Fall ist es lila (Daher sollte dieser Stil in den Drop- und Leave-Ereignissen entfernt werden)
So implementieren Sie den Datei-Drag-and-Drop-Upload

Dateien aus verschiedenen Quellen verarbeiten

Weil Ich muss das Eingabefeld und den Drag-Bereich gleichzeitig bearbeiten. Meine HTML-Struktur ist wie folgt:


             <p class="row" id="dropBox" @drop.prevent="Change($event)">
                <p class="import-data">
                    <button                         
                    :class="{&#39;disabled&#39; : resultMsg.length > 0}"                        class="btn btn-info">
                        <i class="fa fa-cloud-upload text"></i>
                        选择文件                    
                     </button>
                    <span :class="{&#39;error-tips&#39;:isError}">{{msg}}</span>
                    <input                        
                    type="file"                         
                    v-show="resultMsg.length == 0" 
                        @change="Change($event)"                         
                        name="importExcel"                         
                        class="importExcel"                         
                        value="" />
                </p>
                <br>
                <p class="loading" :style="&#39;width:&#39;+loading+&#39;%&#39;"></p>
            </p>
Nach dem Login kopieren

ist das Drop-Ereignis von #dropBox und dem Ereignis von input ändern Binden Sie gleichzeitig die Funktion Change und übergeben Sie das Ereignisobjekt an die Funktion
. Hier habe ich den Modifikator drop zum Ereignis prevent hinzugefügt, um das Standardereignis If zu blockieren Das Ereignis ist nicht blockiert, der Akzeptanzbereich #dropBox ist Die Datei kann nicht empfangen werden und die Datei löst den Browser-Download aus (wenn sie nicht direkt in der Vorschau angezeigt werden kann) oder die Vorschau


            Change:function(ev){
                var e = window.event || ev; 
                var file = e.target.files ? e.target.files[0] : e.dataTransfer.files[0];
                if(!file){
                    vm.msg = "点击选择,或者拖拽填写好数据的excel文件致此";
                    vm.isError = true;
                    return false
                }               
            },
Nach dem Login kopieren

ps: Verstecken Sie den js-Code. Die Geschäftslogik spricht nur über den öffentlichen Teil. Wenn

die vom Benutzer ausgewählte Datei akzeptiert, verwenden Sie e.target.files als Beurteilungsbedingung, um festzustellen, ob dies der Fall ist Wenn ja, nehmen Sie e.target.files[0], wenn nicht, nehmen Sie e.dataTransfer.files[0].
Die Eigenschaften dieser beiden Ereignisobjekte werden vom Browser je nach Situation an das Ereignisobjekt gehängt.

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

Verwandte Etiketten:
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!