In diesem Artikelbeispiel wird der spezifische Code von Vue zum Hoch- und Herunterladen von Dateien zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt Datei-UploadDer Datei-Upload in Vue besteht im Wesentlichen aus zwei Schritten: Abrufen der Datei im Frontend und Senden an das Backend Datei laden Das Frontend erhält Dateien hauptsächlich über das Eingabefeld <el-dialog :title="AddName" :visible.sync="dialogAddFile" width="500px" style="padding:0;" @close="ResetAdd"> Name des Anhangs: <el-input v-model="addFileName" autocomplete="off" size="small" style="width: 300px;" ></el-input> <div Klasse = "Datei rechts hinzufügen" Stil = "Höhe: 70px;Rand links: 100px;Rand oben: 15px;"> <div class="add-file-right-img" style="margin-left:70px;">Datei hochladen:</div> <Eingabetyp="Datei" ref="clearFile" @change="getFile($event)" mehrere="multiplt" Klasse="add-file-right-input" Stil="margin-left:70px;" akzeptieren=".docx,.doc,.pdf"> <span class="add-file-right-more">Unterstützte Erweiterungen: .doc .docx .pdf </span> </div> <div Klasse="Dateiliste hinzufügen"> <ul> <li v-for="(Artikel, Index) in addArr" :key="index"><a >{{Artikel.name}}</a></li> </ul> </div> <div slot="Fußzeile" class="dialog-footer"> <el-button type="primary" @click="submitAddFile" size="small">Hochladen starten</el-button> <el-button @click="resetAdd" size="small">Alle löschen</el-button> </div> </el-dialog> Das Wichtigste ist diese Codezeile: Der Dateiupload wird über das Eingabefeld für den Dateityp implementiert. Anschließend werden mehrere Dateien hochgeladen, indem „multiple=‚multiplt‘“ festgelegt wird. Die Einschränkung des Upload-Dateityps wird mithilfe von „accept“ implementiert. Schließlich erhält das Front-End durch Abhören des Änderungsereignisses die hochgeladene Datei. getFile(Ereignis){ var Datei = Ereignis.Ziel.Dateien; für(var i = 0;i<Dateilänge;i++){ // Beurteilung des Upload-Typs var imgName = file[i].name; var idx = imgName.lastIndexOf("."); wenn (idx != -1){ var ext = imgName.substr(idx+1).toUpperCase(); ext = ext.toLowerCase(); wenn (ext!='pdf' && ext!='doc' && ext!='docx'){ }anders{ dies.addArr.push(Datei[i]); } }anders{ } } }, Die hochgeladenen Dateien können über event.target.files im Änderungsereignis abgerufen werden, und der Typ der abgerufenen Dateien ist oben erneut eingeschränkt. Datenübermittlung Nachdem Sie die Dateidaten erhalten haben, müssen Sie die Daten an den Hintergrund übermitteln. Hier können Sie zum Senden FormData verwenden. sendeAddFile(){ wenn(0 == diese.addArr.length){ diese.$nachricht({ Typ: "Info", Meldung: „Bitte wählen Sie die hochzuladende Datei aus“ }); zurückkehren; } var formData = neue FormData(); formData.append('num', this.addType); formData.append('linkId',this.addId); formData.append('rfilename',this.addFileName); für(var i=0;i<this.addArr.length;i++){ formData.append('fileUpload',this.addArr[i]); } let konfiguration = { Überschriften: { 'Inhaltstyp': 'multipart/Formulardaten', „Autorisierung“: this.token } }; dies.axios.post(apidate.uploadEnclosure,formData,config) .then((Antwort) => { wenn(response.data.info=="Erfolg"){diese.$message({ Typ: "Erfolg", Meldung: „Anhang erfolgreich hochgeladen!“ }); } }) } Beim Senden von Daten sind zwei Punkte zu beachten: FormData-Objekt und Content-Type. Nach der Behandlung dieser beiden Punkte ist es dasselbe wie bei anderen Schnittstellen. Herunterladen der DateiDer erste Schritt besteht darin, eine Liste der Dateien vom Server abzurufen und anzuzeigen: <div Klasse="Über-Datei"> <div class="about-file-title">Zugehörige Materialien</div> <ul> <li v-for="(Element, Index) in zehnAnlagen.Zeilen" :key="index"> <a target="_self" >{{item.tenPencSourname}}</a> <span @click="toxiazai(index,4,item.tenureId)" title="Herunterladen"></span> <span @click="toshanchu(index,4,item.tenureId)" title="Löschen"></span> </li> </ul> </div> Schließen Sie anschließend das Click-Download-Ereignis ab: toxiazai(index,num,id){ var tempForm = document.createElement("form"); //Erstellen Sie ein Formular und folgen Sie den verschiedenen Parametern des Formulars tempForm.id = "tempForm1"; tempForm.method = "posten"; tempForm.action = apidate.downloadEnclosure; tempForm.target="_"; var hideInput1 = document.createElement("Eingabe"); hideInput1.setAttribute('Typ','versteckt'); hideInput1.setAttribute('name','linkId'); hideInput1.setAttribute('id','linkId'); hideInput1.setAttribute('Wert',id); tempForm.appendChild(hideInput1); var hideInput2 = document.createElement("Eingabe"); hideInput2.setAttribute('Typ','versteckt'); hideInput2.setAttribute('name','num'); hideInput2.setAttribute('id','num'); hideInput2.setAttribute('Wert',Anzahl); tempForm.appendChild(hideInput2); wenn(Dokument.alles){ tempForm.attachEvent("onsubmit",function(){}); //IE }anders{ var subObj = tempForm.addEventListener("senden",function(){},false); //Firefox } Dokument.Body.AppendChild(tempForm); wenn(Dokument.alles){ tempForm.fireEvent("onsubmit"); }anders{ tempForm.dispatchEvent(neues Ereignis("Senden")); } tempForm.submit();//POST-Anfrage sendendocument.body.removeChild(tempForm); }, Öffnen Sie die Datei onlineAuf der PC-Seite werden viele Dateien heruntergeladen, auf der Mobiltelefonseite werden die meisten jedoch direkt online geöffnet. Wenn Sie die Datei online öffnen möchten, können Sie das href-Attribut des a-Tags verwenden, um <ul> <li v-for="(Element, Index) in Hinweisliste" v-bind:key="index" Klasse="Personenliste" @click="Hinweis(Index)"> <div Klasse="Personenlistenname"> <a v-bind:href="[filePrefix+item.uuid_name]" rel="externes nofollow" rel="externes nofollow" >{{item.file_name}}</a> </div> <div class="person-list-time">Upload-Zeit: {{item.create_time}}</div> </li> </ul> Denn beim Öffnen einer Datei mit dieser Methode ist ein vollständiger Pfadname erforderlich, beim Abrufen der Liste aus dem Hintergrund handelt es sich jedoch normalerweise um einen relativen Pfad, sodass eine Pfadzusammenführung erforderlich ist: v-bind:href="[filePrefix+item.uuid_name]" Bild-Upload und VorschauNach dem Hochladen der Datei können Sie den Dateinamen zur Anzeige abrufen. Allerdings wird bei diesem Bilderupload nicht mehr der Bildname, sondern die Bildanzeige angezeigt. Um beispielsweise den obigen Effekt zu erzielen, verwenden Sie die Eingabe, um das Bild hochzuladen <div Klasse="Liste-Bild"> <ul> <li v-for="(Element, Index) in imgArr" :Schlüssel="Index"> <img :src="item.path" alt="" > <a @click="todel(index)"></a> </li> <li> <div Klasse="addImg" v-if="imgArr.length<3"> <span class="add">Bild hochladen</span> <span class="add">(Bis zu 3 Fotos hochladen)</span> <Eingabetyp="Datei" @change="getFile($event)" akzeptieren=".jpg,.png,.bmp,.gif"> </div> </li> </ul> </div> getFile(Ereignis){ var Datei = Ereignis.Ziel.Dateien; für(var i = 0;i<Dateilänge;i++){ // Beurteilung des Upload-Typs var imgName = file[i].name; var idx = imgName.lastIndexOf("."); wenn (idx != -1){ var ext = imgName.substr(idx+1).toUpperCase(); ext = ext.toLowerCase(); wenn (ext!='jpg' && ext!='png' && ext!='bmp' && ext!='gif'){ }anders{ dies.imgArr.push(Datei[i]); } }anders{ } } }, Denn beim Drucken des Ereignisobjekts stellte ich fest, dass das hochgeladene Bild ein Pfadfeld enthielt, das der Adresse des Bildes auf dem Gerät entspricht. Ich ging davon aus, dass ich das Bild auf diese Weise anzeigen könnte. Als Ergebnis erhielt ich offensichtlich einen Fehler. Ich überprüfte es im Internet und stellte fest, dass ich FileReader verwenden muss, um die mit Input hochgeladenen Bilder anzuzeigen. Insbesondere kann das durch die Eingabe erhaltene Bild nicht sofort angezeigt werden. Da es sich um zwei völlig unterschiedliche Dinge handelt, ist ein Array zum Speichern der angezeigten Bilder erforderlich. getFile(Ereignis){ var Datei = Ereignis.Ziel.Dateien; lass das = dies; für(var i = 0;i<Dateilänge;i++){ // Beurteilung des Upload-Typs var imgName = file[i].name; var idx = imgName.lastIndexOf("."); wenn (idx != -1){ var ext = imgName.substr(idx+1).toUpperCase(); ext = ext.toLowerCase(); wenn (ext!='jpg' && ext!='png' && ext!='bmp' && ext!='gif'){ }anders{ das.imgArr.push(Datei[i]); } }anders{ } //Hochgeladene Bilder anzeigen let reader = new FileReader() Leser.readAsDataURL(Datei[i]) reader.onload = Funktion(e) { das.imgShow.push(dieses.Ergebnis); } } }, Auf diese Weise wird beim Senden von Daten imgArr und beim Anzeigen imgShow verwendet Zu beachten ist außerdem, dass es auch einen Löschvorgang gibt. Der Löschvorgang ist hier nicht nur auf der Benutzeroberfläche unsichtbar, sondern bedeutet auch, dass die gelöschten Fotos nicht in den Hintergrund übertragen werden müssen. Daher müssen beide Arrays gelöscht werden. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detailliertes Tutorial zur Installation der virtuellen Python 3-Umgebung in Ubuntu 20.04
>>: Beispiel und Lösung für einen SQL-Injection-Sicherheitslückenprozess
My97DatePicker ist ein sehr flexibles und benutze...
In diesem Artikelbeispiel wird der spezifische Co...
Bevor wir über OO, Entwurfsmuster und die vielen o...
Hintergrund In letzter Zeit werde ich in Intervie...
Inhaltsverzeichnis 3 Möglichkeiten zum Bereitstel...
Lassen Sie uns zunächst darüber sprechen, warum w...
Inhaltsverzeichnis 1. Einführung in integrierte O...
Inhaltsverzeichnis 1. Funktionsdefinition 1.1 Fun...
Hier können Sie durch geschickten Einsatz von CSS-...
Installation von Python 3 1. Abhängige Umgebung i...
Der standardmäßige Programmveröffentlichungspfad ...
Vorwort: Wie erhält man die Koordinaten der aktue...
Inhaltsverzeichnis TypeScript-Umgebungskonstrukti...
Ich habe vor Kurzem VMware Horizon bereitgestellt...
Inhaltsverzeichnis Anforderungen: Implementierung...