Der Vue.js-Cloud-Speicher realisiert die Bild-Upload-Funktion

Der Vue.js-Cloud-Speicher realisiert die Bild-Upload-Funktion

Vorwort

Tipp: Das Folgende ist der Hauptinhalt dieses Artikels. Die folgenden Fälle können als Referenz verwendet werden

1. Objektspeicher

Cloud Object Storage (COS) ist ein von Tencent Cloud bereitgestellter verteilter Speicherdienst zum Speichern großer Dateien. Er bietet die Vorteile hoher Skalierbarkeit, niedriger Kosten, Zuverlässigkeit und Sicherheit. Über eine Vielzahl von Methoden wie Konsole, API, SDK und Tools können Benutzer einfach und schnell auf COS zugreifen, um Dateien in mehreren Formaten hochzuladen, herunterzuladen und zu verwalten und die Speicherung und Verwaltung riesiger Datenmengen zu realisieren.

2. Tencent Cloud Cos konfigurieren

1. Bibliothek importieren

Der Code lautet wie folgt (Beispiel):
Ziel: Ein Tencent Cloud-Unternehmen konfigurieren
Aufgrund der Besonderheiten der Klassenentwicklung möchten wir nicht alle Bilder auf unseren eigenen offiziellen Server hochladen. Hier können wir eine Tencent Cloud-Bildlösung verwenden.

Bildbeschreibung hier einfügen

Der erste Schritt besteht darin, ein Tencent Cloud-Entwicklerkonto zu haben

Echtnamenauthentifizierung

Bildbeschreibung hier einfügen

Scannen Sie anschließend den QR-Code zur Autorisierung

Bildbeschreibung hier einfügen

Klicken Sie hier, um kostenlose Produkte zu erhalten

Bildbeschreibung hier einfügen

Wählen Sie Object Storage COS

Bildbeschreibung hier einfügen

An diesem Punkt ist der Kontoteil abgeschlossen. Als Nächstes müssen wir einen Bucket zum Speichern von Bildern erstellen. Melden Sie sich bei der Objektspeicherkonsole an und erstellen Sie einen Bucket. Legen Sie die Bucket-Berechtigungen auf öffentliches Lesen und privates Schreiben fest.

Erstellen eines Buckets

Bildbeschreibung hier einfügen

Einrichten von CORS-Regeln

Bildbeschreibung hier einfügen

AllowHeader muss auf * gesetzt werden.
An diesem Punkt ist unser Tencent Cloud-Speicher-Bucket eingerichtet.

3. Erstellen Sie eine neue Datei-Upload-Komponente

Installieren des JavaScript SDK

npm ich cos-js-sdk-v5 --speichern

Erstellen Sie eine neue Upload-Bildkomponente src/components/ImageUpload/index.vue

Für die Upload-Komponente können wir die el-upload-Komponente des Elements verwenden und den Fotowandmodus listtype="picture-card" übernehmen.

<Vorlage>
  <div>
    <el-hochladen
      Listentyp = "Bildkarte"
      :Grenze="4"
      Aktion=""
      :file-list="Dateiliste"
      :on-preview="Vorschau"
      :http-request="hochladen"
      :on-change="ändern"
      :before-upload="vor dem Hochladen"
      :akzeptieren="Typliste"
      :on-remove="handleEntfernen"
    >
      <i Klasse="el-icon-plus" />
    </el-upload>
    <el-Fortschritt
      v-if="Prozent anzeigen"
      Stil="Breite: 180px"
      :Prozentsatz="Prozent"
    />
    <el-dialog title="Bild" :visible.sync="showDialog">
      <img :src="imgUrl" style="width: 100%" alt="" />
    </el-dialog>
  </div>
</Vorlage>
<Skript>
COS aus „cos-js-sdk-v5“ importieren
const cos = neuer COS({
  SecretId: 'xxx', // geheime ID
  SecretKey: 'xxx' // geheimer Schlüssel
}) // Das instanziierte Paket kann hochgeladen werden und kann in den Speicher-Bucket im Konto hochgeladen werden export default {
  Daten() {
    zurückkehren {
      fileList: [], // Setzt die Bildadresse in ein Array showDialog: false, // Steuert die Anzeige der Popup-Ebene imgUrl: '',
      currentImageUid: null,
      Typliste: "Bild/*",
      showPercent: false, // Ob der Fortschrittsbalken angezeigt werden soll Prozent: 0 // Upload-Fortschritt}
  },
  Methoden: {
    Vorschau(Datei) {
      this.imgUrl = Datei.URL
      this.showDialog = true
    },
    vorUpload(Datei) {
      // Dateitypen, die hochgeladen werden dürfen const types = ['image/jpeg', 'image/gif', 'image/bmp', 'image/png']
      wenn (!types.includes(Datei.Typ)) {
        this.$message.error('Hochgeladene Bilder können nur im JPG-, GIF-, BMP- oder PNG-Format vorliegen!')
        return false // return false verhindert das Hochladen des Bildes}
      Konstante maximale Größe = 1024 * 1024
      if (Dateigröße > max.Größe) {
        this.$message.error('Die maximale Bildgröße darf 1 MB nicht überschreiten.')
        return false
      }
      this.currentImageUid = Datei.uid
      this.showPercent = wahr
      returniere wahr
    },
    hochladen(Parameter) {
      // konsole.log(params.file)
      wenn (params.file) {
        // Upload-Vorgang ausführen cos.putObject({
          Bucket: „xxx“, // Speicher-Bucket Region: „ap-nanjing“, // Regionsschlüssel: params.file.name, // Dateiname Body: params.file, // Hochzuladendes Dateiobjekt StorageClass: „STANDARD“, // Der Upload-Modus-Typ kann standardmäßig direkt auf den Standardmodus eingestellt werden onProgress: (progressData) => {
            dieser.Prozent = Fortschrittsdaten.Prozent * 100
          }
        }, (Fehler, Daten) => {
          // Wie verarbeite ich Daten, nachdem sie zurückgegeben wurden? if (err) return
          diese.fileList = diese.fileList.map(item => {
            wenn (item.uid === this.currentImageUid) {
              return { url: 'http://' + Daten.Standort, Name: Artikel.Name }
            }
            Rücksendeartikel
          })
          // console.log(diese.Dateiliste)
        })
      }
    },
    handleRemove(Datei, Dateiliste) {
      diese.Dateiliste = diese.Dateiliste.filter(Element => Element.uid !== Datei.uid)
      // console.log(Datei)
      cos.deleteObject({
        Bucket: 'xxx', /* Erforderlich*/
        Region: ‚ap-nanjing‘, /* Die Region, in der sich der Bucket befindet, Pflichtfeld*/
        Schlüssel: file.name /* Erforderlich*/
      }, (Fehler, Daten) => {
        // console.log(fehler || daten)
      })
    },
    ändern(Datei, Dateiliste) {
      this.fileList = Dateiliste
    }
  }
}
</Skript>

Detaildetailseite stellt Komponenten vor

<Vorlage>
  <div Klasse="App-Container">
    <el-Karte>
      <el-tabs>
        <el-tab-pane label="Persönliche Daten">
          <Benutzerinfo />
        </el-tab-pane>
        <el-tab-pane label="Passwort zurücksetzen">
          <!-- Formular einfügen -->
          <el-form
            Beschriftungsbreite = "120px"
            Stil="Rand links: 120px; Rand oben: 30px"
          >
            <el-form-item label="Passwort:">
              <el-input style="width: 300px" type="password" />
            </el-form-item>
            <el-form-item label="Passwort bestätigen:">
              <el-input style="width: 300px" type="password" />
            </el-form-item>
            <el-form-item>
              <el-button type="primary">Zurücksetzen</el-button>
            </el-form-item>
          </el-form>
        </el-tab-pane>
        <el-tab-pane label="Abteilungsinformationen">
          <Abteilung />
        </el-tab-pane>
        <el-tab-pane label="Avatar auswählen">
          <Bild-Upload />
        </el-tab-pane>
      </el-tabs>
    </el-Karte>
  </div>
</Vorlage>
<Skript>
importiere userInfo aus „./component/Userinfo“
Abteilung aus „./Komponente/Abteilung“ importieren
importiere imageUpload von '@/components/ImagUpload'

Exportstandard ({
  Komponenten:
   'Benutzerinfo': Benutzerinfo,
   'Abteilung': Abteilung,
   'Bild-Upload': Bild hochladen
  },
  // 
    Methoden: {
    hochladen(e) {
      const Datei = e.Zieldateien[0]
      const reader = neuer FileReader()
      reader.readAsDataURL(Datei)
      reader.onload = asynchrone Funktion (e) {
        warte auf Upload({
          Datei: {
            Originalname: '11.jpg',
            Datei: e.target.result
          }
        })
      }
    }
  }

})
</Skript>

Erstellen Sie eine Route für die Detailseite. Da die aktuelle „Ansicht“ ein sekundärer Navigationssprung ist, sollte die Route wie folgt geschrieben werden:

Layout aus '@/layout' importieren
Standard exportieren {
  Pfad: '/user',
  Komponente: Layout,
  Kinder: [{
    Pfad: 'Index',
    Komponente: () => import('@/views/user/index'),
    Name: "Benutzer",
    Meta: {
      Titel: 'Benutzerverwaltung',
      Symbol: „Konto“
    }
  },
  {
    Pfad: "Detail",
    Komponente: () => import('@/views/user/detail'),
    Name: "Detail",
    versteckt: wahr,
    Meta: {
      Titel: „Benutzerdetails“,
      Symbol: „Konto“
    }
  }]
}

Bildbeschreibung hier einfügen

Rendern

Klicken Sie hier, um Folgendes anzuzeigen:

Bildbeschreibung hier einfügen

Wähle einen Avatar:

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Prüfen Sie, ob es in den Cloud-Speicher hochgeladen wurde:

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über den Cloud-Speicher von vue.js zur Implementierung der Bild-Upload-Funktion. Weitere verwandte Inhalte zum Hochladen von Bildern von vue.js finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

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

<<:  So kompilieren und installieren Sie xdebug in einer Ubuntu-Umgebung

>>:  MySQL 8.0.12 Installations- und Nutzungs-Tutorial

Artikel empfehlen

Beispiel für eine einfache Operation einer MySQL-Abfrageanweisung

Dieser Artikel veranschaulicht anhand von Beispie...

Schritte zum Übertragen des neuen Kernels auf das Linux-System

1. Laden Sie das Ubuntu16.04-Image und den entspr...

HTML Tutorial: Sammlung häufig verwendeter HTML-Tags (4)

Verwandte Artikel: Anfänger lernen einige HTML-Ta...

Ausführliche Erläuterung versteckter Felder, einer neuen Funktion von MySQL 8.0

Vorwort MySQL Version 8.0.23 fügt eine neue Funkt...

Div in HTML ausblenden Tabelle ausblenden TABLE- oder DIV-Inhalt im CSS-Stil

Ich habe heute Abend ein Problem gelöst, das mich...

Vermeiden Sie den Missbrauch zum Lesen von Daten in Vue

Inhaltsverzeichnis Vorwort 1. Der Prozess der Ver...

Eine detaillierte Einführung in den wget-Befehl in Linux

Inhaltsverzeichnis Installieren Sie zuerst wget H...

Analyse der allgemeinen Konfigurationsmethoden für virtuelle Hosts von Apache

1. Installation und Konfiguration des Apache-Serv...

HTML-Formular-Tag-Tutorial (5): Textfeld-Tag

<br />Mit diesem Tag können Sie ein mehrzeil...

JavaScript Voranalyse, Objektdetails

Inhaltsverzeichnis 1. Voranalyse 1. Vorabanalyse ...

W3C Tutorial (9): W3C XPath Aktivitäten

XPath ist eine Sprache zum Auswählen von Teilen v...