Vue Element ui Upload组件在上传文件时,动态切换 action上传路径

这篇具有很好参考价值的文章主要介绍了Vue Element ui Upload组件在上传文件时,动态切换 action上传路径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当我们在使用 Element ui,Upload组件时,官网默认的基础配置如下

<el-upload
  class="avatar-uploader"
  action="https://jsonplaceholder.typicode.com/posts/"  //这里目前是写死的上传路径
  :show-file-list="false"  //上传文件列表
  :on-success="handleAvatarSuccess"  //上传成功后的回调函数
  :before-upload="beforeAvatarUpload">  //上传文件之前的的回调函数
   <el-button size="small" type="primary">点击上传</el-button>
</el-upload>

现在的需求是,如果页面只有 一个 el-upload组件,需要上传的文件,根据不同的类型,切换不同的action 上传路径。

首先我这里选择,通过调用 before-upload 上传文件之前的钩子函数,函数接收一个参数,就是上传的文件信息,然后判断文件的类型,如果上传的是视频文件,那么就,动态重写 action 的上传路径,如果是图片或者音频,同样的动态写入相应的上传路径。

官网中,对上传文件之前的钩子函数,官网这里的描述,可能会让大家产生误导(官网没错,只是有的小伙伴理解错了)。结合描述查看下面有问题的错误写法。
Vue Element ui Upload组件在上传文件时,动态切换 action上传路径

错误写法:

<el-upload
  class="avatar-uploader"
  :action="AudioAndVideoPath"  //现在这里动态绑定地址参数
  :show-file-list="false"  //上传文件列表
  :on-success="handleAvatarSuccess"  //上传成功后的回调函数
  :before-upload="beforeAvatarUpload">  //上传文件之前的的回调函数
   <el-button size="small" type="primary">点击上传</el-button>
</el-upload>

<script>
import { url } from '../../../api/Globaladdress/index'; //我这里导入全局地址总路径
export default {
 data() {
    return {
        url,   //全局地址
        AudioAndVideoPath: ``  //音视频上传动态路径
    }
 },
methods:{
 beforeAvatarUpload(file) {   //上传文件之前的函数
      console.log(file);   //接收上传的文件信息
      const isvideo = file.type === 'video/mp4';  //视频格式,查看上传的文件是不是视频或者音频文件格式,拿到一个Booleans 值
      const isaudio = file.type === 'audio/mpeg';  //音频格式
      if (isvideo) {  //判断如果isvideo等于true,代表,满足要求是视频格式。
             this.AudioAndVideoPath = this.url + "/upload/fileVideo";  //我这里采用字符串拼接,动态重写文件上传路径,这里的路径是专门上传视频的。
             return isvideo ;//(官网描述:如果返回false,就终止上传,那么这里,isvideo 能够进到if判断,就肯定为 true,按官网描述推理,如果返回true,就不会终止上传)
      } else if (isaudio) {  //判断是否满足音频格式,如果满足,动态重写,上传音频时的路径
           this.AudioAndVideoPath = this.url + "/upload/fileAudio";
           return isaudio ;//(上面描述同理)
       } else {   //如果上传文件不满足规定格式,再返回 false ,并提示,终止上传,不用配置上传路径。
            this.$message({
               message: '上传格式不准确!请上传视频或音频格式文件',
                  type: 'warning',
                  duration: 6000
                });
                return false ;//都不满足,再返回false终止上传。
            }
       },
       handleAvatarSuccess(response, file, fileList){   //上传成功后的回调函数(错误写法这里这里不会执行)
             console.log(response, file, fileList);
       }
    }
}
</script>

上述错误写法,会造成,跨域或重定向问题,错误代码404,因为上述错误写法,在我的 beforeAvatarUpload 钩子函数还没,执行的时候 ,Upload 组件中 action 路径方法已经调用了,而这时候,action 的动态路径还没有定义,所以,他会提示找不到路径,可能会导航到当前页面的本地地址,然后报错404。
Vue Element ui Upload组件在上传文件时,动态切换 action上传路径

正确写法如下:首先把 action动态绑定

<el-upload
  class="avatar-uploader"
  :action="AudioAndVideoPath"  //现在这里动态绑定地址参数
  :show-file-list="false"  //上传文件列表
  :on-success="handleAvatarSuccess"  //上传成功后的回调函数
  :before-upload="beforeAvatarUpload">  //上传文件之前的的回调函数
   <el-button size="small" type="primary">点击上传</el-button>
</el-upload>

<script>
import { url } from '../../../api/Globaladdress/index' ;//我这里导入全局地址总路径
export default {
 data() {
    return {
        url,   //全局地址
        AudioAndVideoPath: ``  //音视频上传动态路径
    }
 },
methods:{
 beforeAvatarUpload(file) {   //上传文件之前的函数
      console.log(file);   //接收上传的文件信息
      const isvideo = file.type === 'video/mp4';  //视频格式,查看上传的文件是不是视频或者音频文件格式,拿到一个Booleans 值
      const isaudio = file.type === 'audio/mpeg';  //音频格式
      if (isvideo) {  //判断如果isvideo等于true,代表,满足要求是视频格式,返回一个 Promise 对象
         return new Promise((resolve) => {
             this.$nextTick(() => {
             this.AudioAndVideoPath = this.url + "/upload/fileVideo";  //我这里采用字符串拼接,动态重写文件上传路径,这里的路径是专门上传视频的。
               resolve();
             })
         })
      } else if (isaudio) {  //判断是否满足音频格式,如果满足,动态重写,上传音频时的路径
           return new Promise((resolve) => {
               this.$nextTick(() => {
                  this.AudioAndVideoPath = this.url + "/upload/fileAudio";
                    resolve();
               })
           })
       } else {   //如果上传文件不满足规定格式,则返回 false ,并提示,终止上传,不用配置上传路径。
            this.$message({
               message: '上传格式不准确!请上传视频或音频格式文件',
                  type: 'warning',
                  duration: 6000
                });
                return false;
            }
       },
       handleAvatarSuccess(response, file, fileList){   //上传成功后的回调函数
             console.log(response, file, fileList);
       }
    }
}
</script>

上面就是我遇到的问题,以及解决方法,供大家参考。文章来源地址https://www.toymoban.com/news/detail-509426.html

到了这里,关于Vue Element ui Upload组件在上传文件时,动态切换 action上传路径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue前端直接使用element-ui的upload组件上传到阿里云OSS存储

    因为公司的服务器比较拉吧,所以老大决定将数据文件等上传到阿里云服务器,通过ali-oss方式,这样的话读取文件也比较快  (能看到这说明什么安装element-ui都会了,我就不详细介绍了,直接跳过)  在执行下面操作之前,你要确定你的阿里云能看到上边这个页面   这里主

    2024年02月10日
    浏览(63)
  • 扩展element-ui el-upload组件,实现复制粘贴上传图片文件,带图片预览功能

    控件改造 在窗口的 el-form 控件参数中添加 @paste.native 事件,事件绑定方法名 handlePaste 也可以在其他控件中添加事件监听,看个人需求。 注意: 监听粘贴事件时,需要当前页面先获取焦点,否则无法正常监听, 可以在页面加载后调用 focus() 获取焦点 粘贴功能Js部分参考资料

    2023年04月08日
    浏览(100)
  • element-ui upload图片上传组件使用

    图片上传前端收集 数据 再调用接口发送到后端 组件标签内的参数: 参数 说明 类型 可选值 默认值 action 必选参数,上传的地址 string — — headers 设置上传的请求头部 object — — multiple 是否支持多选文件 boolean — — data 上传时附带的额外参数 object — — name 上传的文件字段

    2023年04月19日
    浏览(43)
  • (实战-改bug)element ui Upload组件 上传一次后,再次点击上传 没反应

     今日修改bug时,上传组件点击上传,上传成功后,再次点击上传,没有反应,二次上传时http-request的方法没有进入。 原因是:第一次上传文件后,浏览器还保存着我们已经上传的文件,所以要想继续上传文件,就需要在on-success钩子函数中通过ref 拿到它的document元素进行清除

    2024年02月03日
    浏览(43)
  • Element-ui upload 手动上传文件

    (随手一发,可以拿过来就用,不做解释看不懂的可以照搬,👇代码可复制👇)    

    2024年02月11日
    浏览(37)
  • Element-UI的Upload 上传文件

    \\\"element-ui\\\": \\\"^2.15.9\\\" Upload 上传官方文档 2.1 自动上传 限制一次只能上传一个文件,并判断上传的文件大小及文件类型; 自动上传:即选择文件后即开始校验,校验通过后调接口上传到服务器 2.2 手动上传 限制一次只能上传一个文件,并判断上传的文件大小及文件类型; 手动上

    2024年02月11日
    浏览(37)
  • 【element-ui组件】一.图像组件;二.导航菜单(NavMenu);三.上传组件:Upload;四.分页组件

    目录 一.图像组件 二.导航菜单(NavMenu) 1.导航方向:通过model属性来设置 2.菜单项: 三.上传组件:Upload 四.分页组件 1.实现分页的方式: (1)服务器端分页:通过底层的数据库来实现,前端会频繁的和服务器交互,客户端每次请求的是分页的数据而不是所有数据

    2023年04月24日
    浏览(50)
  • 使用element-ui的Upload 上传文件

    使用Upload 进行文件上传 https://element.eleme.cn/#/zh-CN/component/upload 注:当文件和一些其他数据(姓名,年龄)进行一起上传时候可分为两种过程 第一种:单独的文件上传地址,上传完文件后,后端返回该文件的地址,前端将该地址同其他数据(姓名,年龄)再次上传。 第二种:

    2024年02月12日
    浏览(41)
  • Element UI | Upload 使用submit方法手动上传文件

    点击上传文件按钮不立刻进行上传,而是点击提交后再调用上传接口,和表单一起提交。 js:  判断文件没有上传即先进行文件上传,上传文件成功后在调用表单上传接口,否则直接调用接口上传表单。submit为element ui内部方法。表单上传接口一般传递文件id。

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包