Implementierungsbeispiel für den Bildupload mit Vue+Element+Springboot

Implementierungsbeispiel für den Bildupload mit Vue+Element+Springboot

Vor kurzem hatte ich zufällig Kontakt mit dem Projekt zur Trennung von Front-End und Back-End von Vue+Springboot und habe die Funktion zum Hochladen von Bildern verwendet und es aufgezeichnet.

Teil des Formularcodes, der im Frontend übermittelt werden soll

<el-form-item label="Titelbild">
                <el-upload v-model="Datenformular.Titel"
                        Klasse = "Avatar-Uploader"
                        :Grenze="1"
                        Listentyp = "Bildkarte"
                        :on-preview="handleBildkartenvorschau"
                        mehrere
                        :http-request="Datei hochladen"
                        :on-remove="handleEntfernen"
                        :on-change='ÄndernHochladen'
                        :file-list="Bilder">
                    <i class="el-icon-plus"></i>
                </el-upload>
            </el-form-item>

Erklärung der Elemente im el-upload:

  • on-preview: Ein Ereignis, das eintritt, wenn Sie in der Dateiliste auf eine hochgeladene Datei klicken
  • on-remove: Die Methode, die beim Löschen einer Datei aufgerufen wird
  • on-change: Ein Ereignis, wenn sich der Dateistatus ändert. Es wird aufgerufen, wenn eine Datei hinzugefügt wird, der Upload erfolgreich war oder der Upload fehlgeschlagen ist.
  • Dateiliste: hochgeladene Dateiliste oder Standard-Darstellung der Echodaten

Rückgabe und Daten

zurückkehren {
                Bilder: [{name: 'food.jpg', url: 'upload/2022/web/20210329194832973.png'}],
                Bild-URL: '',
                fileList: [], // Datei-Upload-Daten (mehrere Dateien in einer)
                dialogImageUrl: '',
                dialogVisible: false,
                Optionen: [],
                Inhalt: '',
                Editoroption: {},
                sichtbar: falsch,
                Datenform: {
                    ID: 0,
                    Titel: '',
                    Inhalt: '',
                    bz: ''
                },
                tempKey: -666666 // Temporärer Schlüssel, der verwendet wird, um das Problem zu lösen, dass der halb ausgewählte Status des Baumelements nicht an die Backend-Schnittstelle übergeben werden kann. # Muss optimiert werden}

Bilder in der Vorschau anzeigen, hochladen und löschen

changeUpload: function(file, fileList) {//Bildvorschau this.fileList = fileList;
            },
            Datei hochladen(Datei){

            },
            handleRemove(Datei, Dateiliste) {
            },
            handlePictureCardPreview(Datei) {
                this.dialogImageUrl = Datei.URL;
                this.dialogVisible = true;
            },

Hier verwende ich das fomrData-Objekt zum Senden, da ich nur ein einzelnes Titelbild hochladen und einige andere Formularinhalte hinzufügen muss.

// Formularübermittlung dataFormSubmit () {
                const form = new FormData() // FormData-Objekt form.append('file', this.fileList);
                form.append('Titel', dieses.Datenformular.Titel);
                form.append('Inhalt', this.$refs.text.value);
                dies.$refs['dataForm'].validate((gültig) => {
                    if (gültig) {
                        dies.$http({
                            URL: diese.$http.adornUrl(`/sys/inform/${!this.dataForm.id ? 'speichern' : 'aktualisieren'}`),
                            Methode: 'post',
                            Daten:Formular
                        }).dann(({data}) => {
                            wenn (Daten && Daten.Code === 0) {
                                diese.$nachricht({
                                    Meldung: „Vorgang erfolgreich“,
                                    Typ: "Erfolg",
                                    Dauer: 1500,
                                    beim Schließen: () => {
                                        this.visible = falsch
                                        dies.$emit('refreshDataList')
                                    }
                                })
                            } anders {
                                dies.$message.error(data.msg)
                            }
                        })
                    }
                })
            }

Im Hintergrund durch HttpServletRequest-Anforderung - WebUtils

.getNativeRequest(request, MultipartHttpServletRequest.class) um die Dateianforderung abzurufen und die Datei auf dem Server oder lokal zu analysieren

/**
 * @Autor lyy
 * PC-Hintergrund-Upload-Datei speichern*/
@RequestMapping(Wert = "sys/file/save", Methode = {RequestMethod.POST, RequestMethod.GET})
@Transaktional
öffentliche R speichern(HttpServletRequest-Anfrage) {
    String klassifizieren = request.getParameter("klassifizieren");
    MultipartHttpServletRequest multipartRequest = WebUtils
            .getNativeRequest(Anfrage, MultipartHttpServletRequest.class);
    String Dateiname = "";
    wenn (multipartRequest != null) {
        Iterator<String> Namen = multipartRequest.getFileNames();
        während (namen.hasNext()) {
            Liste<MultipartFile> Dateien = multipartRequest.getFiles(names.next());
            if (files != null && files.size() > 0) {
                für (MultipartFile-Datei: Dateien) {
                    Dateiname = Datei.getOriginalFilename();
                    Zeichenfolge SUFFIX = FileUtil.getFileExt(Dateiname);
                    Datei uFile = neue Datei();
                    uFile.setFileName(Dateiname);
                    uFile.setClassify(klassifizieren);
                    uFile.setCreateTime(neues Datum());
                    uFile.setFileType(SUFFIX);
                    : String-UUID = FileUtil.uuid();
                    versuchen {
                        uFile.setPath(uploadFile(uuid,Datei) +uuid+"."+SUFFIX);
                    } Fang (IOException e) {
                        e.printStackTrace();
                    }
                     fileService.speichern(uFile);
                }
            }
        }
    }
    return R.ok();
}

Statische Methode zum Hochladen von Dateien auf den lokalen

/**
     * Datei hochladen *@author lyy
     * @param-Datei
     * @zurückkehren
     * @throws IOException
     * @throws IllegalStateException
     */
    öffentliche statische String-Uploaddatei (String-UUID, MultipartFile-Datei) löst IllegalStateException, IOException { aus.
        String defaultUrl = MyFileConfig.getFilePath();
        String-Verzeichnis = java.io.File.separator;
        Zeichenfolge realeURL = StandardURL + Verzeichnis;
        java.io.File realFile = neue java.io.File(realUrl);
        wenn (!realFile.exists() und !realFile.isDirectory()) {
            realFile.mkdirs();
        }
        Zeichenfolge vollständige Datei = echte URL + UUID + "." + FileUtil.getFileExt(file.getOriginalFilename());
        Datei.ÜbertragenAn(neue java.io.Datei(vollständigeDatei));
        String relativePlanUrl = Verzeichnis;
        return relativePlanUrl.replaceAll("\\", "/");
    }

Dies ist das Ende dieses Artikels über das Implementierungsbeispiel für den Bildupload mit Vue+Element+Springboot. Weitere relevante Inhalte zum Hochladen von Bildern mit Vue+Element+Springboot finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vue + SSM realisiert den Vorschaueffekt beim Hochladen von Bildern
  • Vue+axios-Beispielcode zum Hochladen von Bildern und Erkennen von Gesichtern
  • Beim Hochladen von Bildern mit Axios in Vue sind Probleme aufgetreten
  • Der Vue.js-Cloud-Speicher realisiert die Bild-Upload-Funktion
  • Öffentlicher Upload-Bereich für mehrere Typen von Anhangsbildern auf der Vue-Seite und anwendbares Faltfenster (Beispielcode)

<<:  6 interessante Tipps zum Einstellen von CSS-Hintergrundbildern

>>:  Rufen Sie die JS-Funktion oder JS-Variable in HTMLs img src="" auf, um den Bildpfad dynamisch anzugeben

Artikel empfehlen

Implementierungsschritte zur Installation eines Redis-Containers in Docker

Inhaltsverzeichnis Redis auf Docker installieren ...

jQuery+Ajax zum Erreichen eines einfachen Paging-Effekts

In diesem Artikel wird der spezifische Code von j...

Beispiel für einen Fork- und Mutex-Lock-Prozess im Linux-Multithreading

Inhaltsverzeichnis Frage: 1. Erster Versuch 2. Ra...

So verarbeiten Sie lokal dynamisch geladene Bilder in Vue

Finden Sie das Problem Heute bin ich auf ein Prob...

Webinterview: Benutzerdefinierte Vue-Komponenten und Aufrufmethoden

Import: Aufgrund der Projektanforderungen werden ...

HTML+CSS zum Erstellen eines Menüs in der oberen Navigationsleiste

Navigationsleiste erstellen: Technische Vorausset...

So verstehen Sie die JS-Funktion Anti-Shake und Funktionsdrosselung

Inhaltsverzeichnis Überblick 1. Funktion Entprell...

So erstellen Sie ein stilvolles Webseiten-Design (Grafik-Tutorial)

„Großartig“ sind wahrscheinlich die beiden Worte, ...

MySQL- und SQLYog-Installationstutorial mit Bildern und Text

1. MySQL 1.1 MySQL-Installation mysql-5.5.27-winx...