首页 > 其他分享 >el-upload 自定义上传图片(修改文件名,统一上传)

el-upload 自定义上传图片(修改文件名,统一上传)

时间:2022-12-04 16:23:59浏览次数:50  
标签:el name 自定义 文件名 item file 上传 图片

当前遇到的需求是:从本地选取图片之后,要支持用户自己修改文件名,再统一上传oss

第一步:覆盖默认上传行为

 代码为:

第二步:在图片未上传之前得到图片的“伪协议地址”,循环展示,并在每张图片下方加上修改文件名的input输入框

就是这种地址~

代码为:

js部分

html部分

第三步:统一上传oss

由于file对象的name属性是只读的,所以,在用input改变了文件名之后,要使用new File()构造新的file对象,并重置其名

代码为:

 


完整代码:

<template>
  <div>
    <el-upload
      class="upload-demo"
      ref="upload"
      action="#"
      :http-request="uploadFile"
      list-type="picture"
      :show-file-list="false"
      :multiple="true"
      :file-list="fileList"
      accept=".jpg,.jpeg,.png,gif,JPG,JPEG,PNG,GIF"
    >
      <el-button slot="trigger" size="small" type="primary">选择图片</el-button>
    </el-upload>
    <div class="box">
      <div v-for="(item, idx) in fileList" :key="idx" class="item">
        <el-image
          style="width: 100px; height: 100px"
          :src="item.url"
        ></el-image>
        <el-input
          v-model="item.name"
          style="width: 100px"
          placeholder="请输入文件名"
        ></el-input>
      </div>
    </div>
    <button @click="save">保存</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fileList: [],
      formData: null,
    }
  },
  methods: {
    uploadFile(file) {
      this.fileList.push({
        name: file.file.name, //当前文件对象的名称--(之后input框会进行双向绑定修改)
        raw: file.file, //当前文件对象
        url: URL.createObjectURL(file.file), //当前文件对象的内存“伪协议地址”(供预览使用)
      })
    },
    save() {
      let formData = new FormData()
      this.fileList.forEach((item) => {
        let blob = URL.createObjectURL(item.raw)
        let file = new File([blob], item.name) //构造新的file对象,并重置其名
        formData.append('file', file)
      })

      /*接下来,
        调接口,并上传。。。
      */
    },
  },
}
</script>
<style>
.box {
  display: flex;
  flex-wrap: wrap;
}
.item {
  width: 100px;
  border: dotted 1px #666;
  margin: 10px;
}
</style>

 

标签:el,name,自定义,文件名,item,file,上传,图片
From: https://www.cnblogs.com/zhaoyingzhen/p/16950037.html

相关文章

  • nodejs新版本引起的:digital envelope routines::unsupported
    一、起因由于电脑重装系统,重新下载nodejs,自然更新到最新版本18,之前的版本才16。更新到最新nodejs版本后,运行vue文件,报错:this[kHandle]=new_Hash(algorithm,xofLen);......
  • python分布式框架celery(二)
    一、什么是Celery1.1、celery是什么Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。Celery的架构由三......
  • java——mybatis——Mybatis注解开发——@Select查询——查询所有数据
    pom.xml配置:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins......
  • RHEL8关于创建Service服务的帮助手册
    Systemd手册主页Systemd服务关于搜索路径顺序和部分配置项手册Systemd服务配置语法如果想通过man查看手册的话,那么使用mansystemd.<unit|syntax|...>格式进行查看帮......
  • 学习Delphi原生JSON框架(二)
    前面写了如何快速读取一个JSON串,但只是针对简单的类型,如果JSON串中有数组该怎么办呢?一、例子代码先看下面的代码,读取一个学生的各科成绩。procedureTForm6.Button1Cli......
  • Excel二维码图片生成器
    Excel二维码图片生成器它可以将excel文件的数据,每行数据生成一张二维码图片,并保存到电脑。软件无需安装,解压后即可直接使用,无需联网,操作简便快捷。软件下载地址:点此下载......
  • Linux使用 RPM 安装 Elasticsearch
    参考网站:https://www.elastic.co/guide/en/elasticsearch/reference/8.5/rpm.html#rpm-repo1.导入ElasticsearchGPG签名密钥rpm--importhttps://artifacts.elastic.c......
  • elasticsearch安装以及注意事项
    一、修改linux限制1./etc/security/limits.conf#1.修改系统中允许应用最多创建多少文件等的限制权限。一般限制应用最多创建的文件为65535,但是es至少需要65536的文件创建权......
  • Element-ui 中的 下拉菜单 和 下拉菜单
    Element-ui中的下拉菜单和下拉菜单<divclass="header"><divclass="logo"><imgsrc="../../../assets/layout/logo.png"alt=""></div>......
  • GitHelp
    Git常用命令仓库#在当前目录新建一个Git代码库$gitinit#新建一个目录,将其初始化为Git代码库$gitinit[project-name]#下载一个项目和它的整个代码历史$g......