Vue verwendet OSS zum Hochladen von Bildern oder Anhängen

Vue verwendet OSS zum Hochladen von Bildern oder Anhängen

Verwenden Sie OSS, um Bilder oder Anhänge in ein Vue-Projekt hochzuladen

Dabei wird nicht zwischen dem Hochladen von Bildern und Anhängen unterschieden, der Upload-Vorgang ist derselbe;

1. Erstellen Sie eine neue oss.js-Datei, kapseln Sie oss ein und verwenden Sie es (das ali-oss-Paket muss installiert werden).

const OSS = erfordern('ali-oss')

const OSSConfig = {
  uploadHost: 'http://xxxxx.oss-cn-shenzhen.aliyuncs.com', //OSS-Upload-AdresseossParams: {
    Region: 'oss-cn-shenzhen',
    success_action_status: '200', // Standard ist 200
    Zugriffsschlüssel-ID: "LTxxxxxxxxxxxxxxxvnkD",
    Zugriffsschlüsselgeheimnis: "J6xxxxxxxxxxxxxxxxiuv",
    Eimer: 'xxxxxxxx-czx',
  },
}

Funktion random_string(Länge) {
  Länge = Länge || 32
  var Zeichen = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678"
  var maxPos = Zeichenlänge
  var pwd = ''
  für (sei i = 0; i < len; i++) {
    pwd += Zeichen.charAt(Math.floor(Math.random() * maxPos))
  }
  Passwort zurückgeben
}

Funktion uploadOSS(Datei) {
  returniere neues Promise(async (auflösen, ablehnen) => {
    const Dateiname = `${random_string(6)}_${file.name}`
    let client = neues OSS({
      Region: OSSConfig.ossParams.region,
      accessKeyId: OSSConfig.ossParams.accessKeyId,
      accessKeySecret: OSSConfig.ossParams.accessKeySecret,
      Eimer: OSSConfig.ossParams.bucket,
    })
    const res = warte auf Client.multipartUpload (Dateiname, Datei).
    // auflösen (res)
    // Oder geben Sie es wie folgt zurück:
    lösen({
        Datei-URL: `${OSSConfig.uploadHost}/${fileName}`,
        Dateiname: datei.name
    })
  })
}

exportieren { hochladenOSS }

2. Verwenden Sie oss.js auf der Seite

Dies ist eine sekundäre Kapselung der Upload-Komponente von elementUI. Zum Hochladen von Bildern und Anhängen wird nicht die Komponentenaktion verwendet, sondern die OSS-Upload-Methode.

<Vorlage>
  <div Klasse="Upload-Datei">
    <el-hochladen
      ref="Datei-Upload"
      Aktion=""
      :headers="uploadProps.headers"
      Listentyp = "Bildkarte"
      :Dateiliste anzeigen="false"
      :http-request="fnUploadRequest"
      :bei-Erfolg="HandleErfolg"
      :on-error="Fehlerbehandlung"
      :before-upload="Upload-Handle"
    >
      <Steckplatz></Steckplatz>
    </el-upload>
  </div>
</Vorlage>

<Skript>
importiere { getAccessToken, getRefreshToken, getAccessTokenTTL } von "@/utils/auth";
importiere { uploadOSS } von '@/utils/oss';

Standard exportieren {
  Name: "Index",
  Daten() {
    zurückkehren {};
  },
  berechnet: {
    BenutzerkontoID() {
      gib dies zurück.$store.state.user.userAccountID;
    },
    uploadProps() {
      zurückkehren {
        // Aktion: `${process.env.VUE_APP_BASE_API}/api/file/upload`,
        Überschriften: {
          // Die Schnittstelle erfordert möglicherweise ein Token: "",
          Autorisierung: getAccessToken(),
        },
        Daten: {},
      };
    },
  },
  Methoden: {
    handleExceed(Datei, Dateiliste){
      // console.log(Datei, Dateiliste);
      this.$message.error('Upload fehlgeschlagen, begrenzen Sie die Upload-Menge auf 10 Dateien!');
    },
    handleUpload(Datei, Dateiliste){
      // console.log(Datei, Dateiliste);
      var testmsg = Datei.Name.Teilzeichenfolge(Datei.Name.letzterIndexvon('.') + 1)
      const-Erweiterung = testmsg === 'xlsx' || testmsg === 'xls' || testmsg === 'docx' || testmsg === 'doc'
        || testmsg === 'pdf' || testmsg === 'zip' || testmsg === 'rar' || testmsg === 'ppt' || testmsg === 'txt'

      const isLimit10M = Dateigröße / 1024 / 1024 < 10
      var bool = false;
      wenn(Erweiterung && isLimit10M){
        bool = wahr;
      } anders {
        bool = falsch;
      }
      if(!Erweiterung) {
        this.$message.error('Bitte wählen Sie den Dateityp des Anhangs!');
        gibt bool zurück;
      }
      wenn(!isLimit10M) {
        this.$message.error('Upload fehlgeschlagen, darf 10 M nicht überschreiten!');
        gibt bool zurück;
      }
      gibt bool zurück;
    },
    handleErfolg(res) {
      // konsole.log(res);
      wenn (res) {
        dies.$emit('fileData', res)
        this.$message.success("Anhang erfolgreich hochgeladen!");
      }
    },
    handleError(Fehler){
      this.$message.error('Anhang konnte nicht hochgeladen werden!');
    },
    // Bild asynchron hochladen fnUploadRequest(options) {
      versuchen {
        // console.log(Optionen);
        let file = options.file; // Datei abrufen
        let res = warte auf UploadOSS(Datei)
        konsole.log(res);
        //Daten zurückgeben this.$emit("fileData", res);
        this.$message.success("Anhang erfolgreich hochgeladen!");
      } fangen (e) {
        this.$message.error('Anhang konnte nicht hochgeladen werden!');
      }
    },
  },
};
</Skript>

<style lang="scss" scoped>
::v-tief .el-upload,
.el-upload--Bildkarte {
  // Breite: 50px;
  Höhe: 0px;
  Rand: keiner;
  Zeilenhöhe: 0;
  Anzeige: Block;
  Hintergrund: #f5f6fb;
}
.el-hochladen {
  Breite: 50px;
}
.img-cont {
  Breite: 50px;
  Höhe: 24px;
  Hintergrund: #f5f6fb;
  .img-Symbol {
    Farbe: #ccc;
  }
  .img-text {
    Schriftgröße: 12px;
    Höhe: 24px;
    Farbe: #000;
  }
}
</Stil>

Verwenden Sie die gekapselte Upload-Komponente

  	<div Klasse="Aufgabendetail pr">
        <el-form-item label="Grund der Meldung" prop="taskDesc" erforderlich>
          <div Klasse = "Flex-Center Upload-Position">
            <ImgUpload @imgData="imgData" />
            <FileUpload Klasse="ml10" @fileData="fileData" />
          </div>
          <el-Eingabe
            Typ="Textbereich"
            v-Modell="ruleForm.taskDesc"
            Platzhalter="Bitte geben Sie den Grund für die Meldung ein"
            maximale Länge = "200"
            @input="checkiptTaskDesc()"
          ></el-Eingabe>
          <div Klasse="ipt-taskDesc-length">{{checkIptTaskDescLen}}/200</div>
          <div Klasse="img-list mt10 flex">
            <ImgZoomIn :imagesList="imagesList" @deleteImg="deleteImg"></ImgZoomIn>
          </div>
          <div Klasse="dotted-line" v-if="imagesList.length > 0 && filesList.length > 0"></div>
          <div Klasse="Dateielement">
            <HandleFile :filesList="filesList" @deleteFile="deleteFile"></HandleFile>
          </div>
        </el-form-item>
      </div>

Bildbeschreibung hier einfügen

Die Wirkung ist wie folgt

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels darüber, wie Vue OSS zum Hochladen von Bildern oder Anhängen verwendet. Weitere relevante Inhalte darüber, wie Vue OSS zum Hochladen von Bildern oder Anhängen verwendet, 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 + Element + OSS realisiert das Hochladen von Front-End-Fragmenten und die Wiederaufnahme von Haltepunkten
  • Vue Element UI + OSS zur Realisierung der Funktion zum Hochladen von Dateien
  • Beispiel zum Hochladen von Bildern in den Alibaba Cloud OSS-Speicher mit Vue.js
  • Beispiel zum Hochladen von Bildern in OSS in Vue (Bilder haben eine Löschfunktion)
  • Beispiel für die Verwendung der Ali OSS-Uploadfunktion auf der Vue-Seite (Teil 2)
  • Beispiel für die Verwendung der Ali OSS-Uploadfunktion auf der Vue-Seite (I)

<<:  Detaillierte Erläuterung der kombinierten MySQL-Indexmethode

>>:  Schritte zum Kauf eines Cloud-Servers und zur Installation des Pagoda Panels in der Alibaba Cloud

Artikel empfehlen

MySQL-Lernhinweise: Daten-Engine

Sehen Sie sich die von der aktuellen Datenbank un...

Quellcodeanalyse des Nodejs-Modulsystems

Inhaltsverzeichnis Überblick CommonJS-Spezifikati...

Drei Möglichkeiten zur Implementierung virtueller Hosts unter Linux7

1. Gleiche IP-Adresse, unterschiedliche Portnumme...

Erstellen privater Mitglieder in JavaScript

Inhaltsverzeichnis 1. Verwende Closures 2. Verwen...

W3C Tutorial (5): W3C XML Aktivitäten

XML dient der Beschreibung, Speicherung, Übertrag...

Beginnen Sie CSS-Pseudoklassennamen nicht mit Zahlen

Wenn Neulinge Div+CSS entwickeln, müssen sie die ...

Detaillierte Erklärung dreier häufig verwendeter Webeffekte in JavaScript

Inhaltsverzeichnis 1 Element Offset-Serie 1.1 Off...

Fortgeschrittene JavaScript-Programmierung: Variablen und Umfang

Inhaltsverzeichnis 1. Ursprungswert und Bezugswer...

So richten Sie die passwortfreie SSH-Anmeldung beim Linux-Server ein

Bei jeder Anmeldung am Testserver ist grundsätzli...

So installieren Sie Redis in Docke

1. Suchen Sie nach einem Redis-Image Docker-Suche...

Detaillierte Erklärung zum Ersetzen in ein Beispiel in MySQL

Detaillierte Erklärung zum Ersetzen in ein Beispi...