詳解el-upload上傳圖片

一、upload上傳照片和文字

el-upload提供了一種簡單的方式來上傳照片和文字,我們可以使用它輕鬆上傳圖片和附帶文字,下面我們來看看怎麼做:

1、首先,我們需要在頁面上引入el-upload組件:

<template>
  <el-upload
    class="upload-demo"
    action="https://jsonplaceholder.typicode.com/posts/"
    :data="{ userId: 1 }"
    multiple
    :on-success="handleSuccess"
    :before-upload="beforeUpload">
    <el-button size="small" type="primary">點擊上傳</el-button>
    <div slot="tip" class="el-upload__tip">jpg/png文件,大小不超過 10MB</div>
  </el-upload>
</template>

2、接著,我們需要定義兩個方法:beforeUpload和handleSuccess。其中,beforeUpload用來檢測文件是否符合要求,handleSuccess在文件上傳成功後處理返回的結果。

data() {
  return {
    fileList: []
  };
},
methods: {
  handleSuccess(response, file, fileList) {
    console.log(response, file, fileList);
  },
  beforeUpload(file) {
    const isJPG = file.type === 'image/jpeg';
    const isPNG = file.type === 'image/png';
    const isLt10M = file.size / 1024 / 1024 < 10;

    if (!isJPG && !isPNG) {
      this.$message.error('上傳圖片只能是 JPG/PNG 格式!');
    }
    if (!isLt10M) {
      this.$message.error('上傳圖片大小不能超過 10MB!');
    }
    return (isJPG || isPNG) && isLt10M;
  }
}

二、element upload上傳

el-upload是element-ui框架中內置的上傳組件,它提供了豐富的上傳功能,還允許用戶自定義上傳參數和文件篩選規則。

1、首先,我們需要在頁面上引入element-ui:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

2、接著,我們需要在頁面上引入el-upload組件:

<template>
  <div>
    <el-upload
      class="upload-demo"
      action="https://jsonplaceholder.typicode.com/posts/"
      :auto-upload="false"
      :on-change="uploadChange">
      <el-button size="small" type="primary">點擊上傳</el-button>
      <div slot="tip" class="el-upload__tip">jpg/png文件,大小不超過 10MB</div>
    </el-upload>
    <el-button
      class="upload-demo"
      type="success"
      @click="submitUpload">
      上傳至伺服器
    </el-button>
    <div v-for="(item, index) in fileList" :key="index">
      {{ item.name }}
    </div>
  </div>
</template>

3、然後,我們需要在data函數中定義fileList變數來存儲上傳的文件列表:

data() {
  return {
    fileList: []
  };
}

4、接著,我們需要定義兩個方法:uploadChange和submitUpload。其中,uploadChange用於上傳文件後更新文件列表,submitUpload用於將文件上傳至伺服器。

methods: {
  uploadChange(file, fileList) {
    this.fileList = fileList.slice();
  },
  submitUpload() {
    this.$refs.upload.submit();
  }
}

三、el-upload手動上傳

el-upload還支持手動上傳,這意味著用戶可以手動選擇文件,然後單擊「上傳」按鈕將其上傳到伺服器。

1、首先,我們需要在頁面上引入el-upload組件:

<template>
  <el-upload
    class="upload-demo"
    ref="upload"
    :auto-upload="false"
    :on-change="handleChange">
    <el-button size="small" type="primary">點擊上傳</el-button>
    <div slot="tip" class="el-upload__tip">jpg/png文件,大小不超過 10MB</div>
  </el-upload>
  <el-button
    class="upload-demo"
    type="success"
    @click="submitUpload">
    上傳至伺服器
  </el-button>
</template>

2、接著,我們需要定義handleChange方法來更新文件列表:

handleChange(file, fileList) {
  this.fileList = fileList.slice();
}

3、最後,我們需要定義submitUpload方法,在用戶單擊「上傳至伺服器」按鈕時調用該方法,觸發手動上傳。

submitUpload() {
  this.$refs.upload.submit();
}

四、el-upload上傳文件夾

我們還可以使用el-upload上傳文件夾到伺服器,el-upload提供了一個directory屬性,當它設置為true時,用戶可以上傳整個文件夾,而不僅僅是單個文件。

1、首先,我們需要在頁面上引入el-upload組件:

<template>
  <el-upload
    class="upload-demo"
    :directory="true"
    action="https://jsonplaceholder.typicode.com/posts/"
    :on-change="handleChange"
    :before-upload="beforeUpload">
    <el-button size="small" type="primary">點擊上傳</el-button>
    <div slot="tip" class="el-upload__tip">文件夾,大小不超過 10MB</div>
  </el-upload>
</template>

2、接著,我們需要定義handleChange和beforeUpload方法,其中handleChage方法用於更新文件列表,beforeUpload方法用於檢測上傳的文件夾是否符合要求:

handleChange(file, fileList) {
  this.fileList = fileList.slice();
},
beforeUpload(file) {
  const isLt10M = file.size / 1024 / 1024 < 10;

  if (!isLt10M) {
    this.$message.error('上傳文件夾大小不能超過 10MB!');
  }
  return isLt10M;
}

五、webuploader分片上傳選取

除了以上提到的幾種上傳方法,我們還可以使用webuploader插件實現分片上傳選取,下面是詳細的實現方法:

1、首先,需要在頁面上引入webuploader插件的樣式文件和JS文件:

<style>
  @import url('/static/webuploader/webuploader.css');
</style>
<script src="/static/webuploader/webuploader.min.js"></script>

2、接著,我們需要創建一個容器來存儲webuploader的ui組件:

<template>
  <div id="webuploader"></div>
</template>

3、然後,我們需要在mounted方法中初始化webuploader組件:

mounted() {
  let uploader = WebUploader.create({
    auto: true,
    server: '/api/file/upload',
    pick: '#webuploader',
    resize: false,
    chunked: true,
    chunkSize: 5 * 1024 * 1024,
    chunkRetry: 3,
    threads: 1,
    fileNumLimit: 10,
    fileSizeLimit: 10 * 1024 * 1024,
    fileSingleSizeLimit: 100 * 1024 * 1024
  });
}

4、最後,我們需要在data函數中定義uploader變數來存儲webuploader組件,並在beforeDestroy方法中銷毀組件:

data() {
  return {
    uploader: null
  };
},
beforeDestroy() {
  this.uploader.destroy();
}

總結

el-upload是element-ui框架中內置的上傳組件,它提供了多種上傳方式,例如上傳照片和文字、element upload上傳、上傳文件夾、使用webuploader實現分片上傳選取等,可以滿足大多數上傳需求。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256683.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:42
下一篇 2024-12-15 12:42

相關推薦

  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25

發表回復

登錄後才能評論