Frage:Ich habe in Vue ein Formular zum Hochladen von Blogbeiträgen. Es bietet Bereiche für Titel, Text, Beschreibung, Snippet und Bild. Alles ist notwendig. Ich habe in Express eine API eingerichtet, um dies zu handhaben. Ich habe es in Postman getestet und es hat gut funktioniert, aber ich weiß nicht, wie ich die Datei über den Browser an die Datenbank senden kann. Ich erhalte ständig einen 500-Fehler und drucke die Daten auf der Konsole aus. Das Bildfeld ist leer. Ich bin also sicher, dass das das Problem ist, kann aber einfach nicht herausfinden, was es ist. Dies ist die Form meiner Front-End-Seite: <Vorlage> <div Klasse="Container"> <div id="nav"> <Administratornavigation/> </div> <div id="erstellen"> <h1>Neuen Beitrag erstellen</h1> </div> <div id="Beitrag"> <Text> <form> <label for="title">Titel: </label> <textarea v-model=formdata.title Zeilen="5" Spalten="60" Name="Titel" Platzhalter="Text eingeben"> </textarea> <br/> <label for="body">Textkörper: </label> <textarea v-model=formdata.body Zeilen="5" Spalten="60" Name="body" Platzhalter="Text eingeben"> </textarea> <br/> <label for="description">Beschreibung: </label> <textarea v-model=formdata.description Zeilen="5" Spalten="60" Name="Beschreibung" Platzhalter="Text eingeben"> </textarea> <br/> <label for="snippet">Ausschnitt: </label> <textarea v-model=formdata.snippet Zeilen="5" Spalten="60" Name="snippet" Platzhalter="Text eingeben"> </textarea> <br/> <label for="file">Foto hochladen: </label> <Eingabe Klasse="Formular-Steuerdatei" Typ="Datei" akzeptieren="image/*" v-bind="formdata.photo" /> <br/> <input id="senden" type="senden" value="senden" @click.prevent="createPost()"/> </form> </body> </div> </div> </Vorlage> <Skript> importiere Adminnav aus „../components/adminnav.vue“; importiere PostService aus „../service/PostService“; Standard exportieren { Name: "createStory", Komponenten: Administratornavigation, }, Daten() { zurückkehren { Formdaten: { Titel: '', Körper: '', Beschreibung: '', Ausschnitt: '', Foto: null, }, }; }, Methoden: { Beitrag erstellen() { Konsole.log(diese.Formdaten); /* eslint bevorzugt Destrukturierung: 0 */ const formdata = diese.formdata; PostService.createPost(Formulardaten) .then(() => { console.log('Erfolg'); }); }, }, }; </Skript> Dies ist eine POST-Anfrage. router.post("/add-story", upload.single('Foto'), async(req, res) => { versuchen{ let post = neuer Beitrag(); Beitragstitel = erforderlicher Textkörpertitel; Beitragsbeschreibung = erforderliche Textkörperbeschreibung; post.photo = erforderlicher.Dateispeicherort; post.body = erforderlich.body.body; Beitrag.Snippet = erforderlich.Body.Snippet; warte auf post.save(); res.json({ Status: wahr, Meldung: „Erfolgreich gespeichert.“ }); } Fang(Fehler) { res.status(500).json({ Erfolg: falsch, Nachricht: Fehlernachricht }); } }); Problemumgehung Lassen Sie uns das <Eingabetyp="Datei" akzeptieren="Bild/*" Klasse="Formular-Steuerungsdatei" @change="updatePhoto($event.target.name, $event.target.files)" > Code zum Sammeln aller Daten und Senden der Anfrage // Der Rest der Vue-Komponente data () { zurückkehren { Titel: '', Körper: '', Beschreibung: '', Ausschnitt: '', Foto: {} //Dateidaten speichern}; }, Methoden: { updatePhoto (Dateien) { wenn (!Dateien.Länge) return; //Dateidaten speichern this.photo = { Name: Dateien[0].Name, Daten: Dateien[0] }; }, Beitrag erstellen() { let formData = neue FormData(); formData.append('Titel', dieser.Titel); formData.append('body', dieser.body); formData.append('Beschreibung', diese.Beschreibung); formData.append('snippet', dieses.snippet); formData.append('Foto', dieses.Foto.Daten, dieser.Foto.Name); PostService.createPost(Formulardaten) .then(() => { console.log('Erfolg'); }); } } // Der Rest der Vue-Komponente Offensichtlich habe ich viele Dinge übersprungen, wie die gesamte Vue-Komponentenstruktur, die für diese Frage sicher irrelevant ist, und einige Prüfungen, um sicherzustellen, dass die Dateidaten verfügbar sind, bevor die Anfrage usw. gestartet wird. Dies ist eine Idee, wie Sie an die Dateidaten gelangen. Hoffentlich kann diese Antwort Sie inspirieren. Oben finden Sie Einzelheiten zur Verarbeitung von Bildern in Vue-Formularen. Weitere Informationen zur Verarbeitung von Bildern in Vue-Formularen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Was tun, wenn Sie das ursprüngliche Passwort für MySQL auf dem MAC vergessen?
>>: Lernen Sie MySQL auf einfache Weise
Heutige Aufgaben 1. Wahl der Linux-Distribution 2...
Im Zuge des schrittweisen Übergangs von herkömmli...
Inhaltsverzeichnis Analysieren von VUE-Dateien Do...
Zählskript #!/bin/sh AnzahlArgs=$# wenn [ $numOfA...
Zusammenfassung: HBase verfügt über zahlreiche Be...
Autor: Ding Yi Quelle: https://chengxuzhixin.com/...
Inhaltsverzeichnis 1. Einleitung 2. MVCC (Multi-V...
Das Herunterladen dieser Datenbank nimmt viel Zei...
In diesem Artikel wird der spezifische JS-Code zu...
Hyperlinks ermöglichen es Benutzern, sofort von ei...
Führen Sie zuerst den Docker-Container aus Führen...
Auf Webseiten begegnen wir häufig dieser Situatio...
Erstellen Sie ein neues Projekt test1 auf Code Cl...
Die unten zusammengefassten Wissenspunkte werden ...
Inhaltsverzeichnis 01 Häufige Fehler 1 02 Häufige...