您的位置:

详解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实现分片上传选取等,可以满足大多数上传需求。

详解el-upload上传图片

2023-05-18
详解el-upload图片回显

2023-05-22
深入探讨el-upload上传视频

2023-05-18
el-upload上传文件大小限制详解

2023-05-21
了解Typora PicGo :实现快捷上传和管理笔记中的图

2023-05-21
详解elementui上传图片

2023-05-19
Vueel-Upload上传控件详细介绍

2023-05-20
jsp图片上传样式(jsp怎么上传图片并显示图片)

本文目录一览: 1、jsp如何上传图片到数据库 2、用Java Web的jsp制作图片上传和显示如何实现 3、jsp中怎么上传图片啊 4、JSP如何上传图片? 5、jsp图片上传怎么写,它涉及哪方面的

2023-12-08
使用ElementUI实现图片预览的详细教程

2023-05-19
php把图片上传到又拍云(照片上传到云)

2022-11-12
深入了解el-uploaddata

2023-05-20
Layui上传图片详解

2023-05-20
uniapp上传图片到服务器的详细阐述

2023-05-20
php多图片上传dome,php上传多张图片

2022-11-26
在iViewUpload上使用的图片上传方法 - iView

2023-05-17
uniapp图片上传详解

2023-05-20
java中ajax上传图片,JAVA图片上传

2022-11-18
php上传组件,php上传函数

2022-11-27
上传下载图片代码jsp,上传图片的代码

本文目录一览: 1、jsp中如何编写代码实现图片的上传下载 2、jsp上传图片,最好完整代码。100分! 3、JSP如何上传图片? 4、JSP如何上传图片 5、Jsp上传图片到指定文件夹下 求详细代码

2023-12-08
求jsp图片上传源码(求jsp图片上传源码在哪)

本文目录一览: 1、求JSP中页面中添加图片(包含非图片的数据)的上传图片代码? 2、求JSP上传文件的代码 图片 视频 音频WORD 之类的文件 3、谁有jsp上传图片的代码了,把上传的图片保存到文

2023-12-08