原理:dispatchEvent 自定义触发事件,常用于自定义鼠标事件或点击事件 ,原生控件input打开上传文件
方案:vue项目,点击自己的上传文件图标,通过dispatchEvent主动触发一个自定义上传文件事件 .

  • 原生控件 input 

accept 属性: 
accept = "audio/* " :接受所有的声音文件
accept = "video/* " :接受所有的视频文件

accept = "image/* " :接受所有的图像文件。

如需规定多个值,请使用逗号分隔(比如 <input accept="audio/*,video/*,image/*" />)。

<input
type="file"
accept="image/*" // 可以打开相机或文件,"jpg,png,gif"这种打开只能上传特定文件且没有相机
@change="changeImage()"
ref="avatarInput"
style="display:none"
>
  • 隐藏原生上传控件,使用自己上传的图标实现上传功能
  • <template>
    <section>
    <!-- 自定义上传按钮 -->
    <div class="list-items">
    <span>活动主K</span>
    <div class="images" @click="uploadImg(1)">
    <img :src="require('./images/upload@2x.png')" alt="" />
    </div>
    </div>
    <!-- 原生控件 -->
    <input class="uploadfile" type="file" @change="fileImage" ref="filElem" style="display: none" accept="image/*" />
    </section>
    </template>
    <script>
    export default {
    methods: {
    // 上传图片
    uploadImg() {
    if (this.$store.state.isInApp) {
    console.log('isInApp');
    } else {
    // 触发一个自定义事件
    this.$refs.filElem.dispatchEvent(new MouseEvent("click"));
    }
    },
    fileImage(e) {
    let that = this;
    let file = e.target.files[0];
    this.file = file;
    // 校验图片格式
    var rFilter = /^(image\/jpeg|image\/jpg|image\/png|image\/gif)$/i; // 检查图片格式
    if (!rFilter.test(file.type)) {
    $utilMsg.warn("不支持的格式,请重新上传!");
    return false;
    }
    // 判断图片是否大于10M
    if (file.size >= 10 * 1000 * 1024) {
    return $utilMsg.warn("上传图片过大,请重新选择");
    }
    this.upImgUrl()
    },
    upImgUrl() {
    let params = new FormData();
    params.append("file[]", this.file);
    let that = this
    return window.$.ajax({
    type: "POST",
    url: xxxxx,
    data: params,
    contentType: false,
    processData: false,
    mimeType: "multipart/form-data",
    success: function (data) {
    data = JSON.parse(data);
    if (+data.code === 0) {
    let imgarr = data.data
    that.picThumb = imgarr[0].showPath;
    console.log('外部图片', imgarr);
    } else {
    console.log('上传失败');
    return
    }
    },
    });
    },
    }
    }
    </script>

vue+html5实现上传图片的更多相关文章

  1. vue element-ui 组件上传图片 以及对 图片的 宽高 和 大小 格式等 做出限制

    vue  文件: 自行引用 elemen-ui    <el-upload                         action=" 让后端给你上传地址 "      ...

  2. html5中上传图片

    从相册中选择图片上传 function uploadFromAlbum(type) { var dirtype = ""; if ("pick_store_license ...

  3. Html5 拖放上传图片

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  4. Vue HTML5 History 模式

    vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载. 如果不想要很丑的 hash,我们可以用路由的 his ...

  5. vue+element 递归上传图片

    直接上代码. <template>   <div>     <el-upload       action="http://localhost:3000/pic ...

  6. vue element-ui 组件上传图片 之后 对上传按钮 进行隐藏,删除之后重新显示

    注:如果在当前的 vue 文件里 写了 style 样式,得 去除 scoped [私有属性必须去除,不能保留](这个是重点,不去除不生效), template 部分 <el-upload    ...

  7. vue 引入vant 上传图片oss处理

    <van-uploader :before-read="beforeRead" v-model="product.images" max-size=&qu ...

  8. html5异步上传图片显示上传文件进度条

    <html> <head> </head> <body> <p> emo_album_id:<input type="tex ...

  9. jquery html5 file 上传图片显示图片

    jquery js 的代码:不同浏览器下的路径 //建立一個可存取到該file的url function getObjectURL(file) {     var url = null ;     i ...

  10. vue|html5 form 验证

    html:<form id="scoreForm" @submit="fsub" > <template v-for="(item, ...

随机推荐

  1. Python实验报告(第9章)

    实验9:异常处理及程序调试 一.实验目的和要求 1.了解代码异常知识: 2.掌握异常处理的try-except语句.try-except-else语句.try-except-finally语句.rai ...

  2. 【转载】SQL SERVER 中各种存储过程创建及执行方式

    一. 什么是存储过程系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务.系统存储过程主要存储在master数据库中,以&quo ...

  3. prometheus-监控docker服务器

    1. prometheus-监控docker服务器 prometheus-监控docker服务器 cAdvisor(Container Advisor):用于收集正在运行的容器资源使用和性能信息. 项 ...

  4. 1_使用swiper数组对象循环图片遇到的问题

    今天在练习微信小程序的swiper组件时,想用列表循环出图片,发现图片一直没出来,控制台也没有报错,后来仔细一看,原来是语法格式写错了. 以下是我列表循环踩过的坑: 一:微信小程序的列表循环和vue的 ...

  5. 如何在mac电脑上配置命令行工具

    Hi,欢迎大家在有空的时候做客[江涛学编程],这里是2023年的第7篇原创文章,今天我们来聊一聊如何在mac电脑上配置命令行工具 老规矩,拍拍手,上菜. 同学,打开你的mac电脑,按住键盘上的&quo ...

  6. ios网络协议从http变成https

    最近发了一个很蛋疼的事,iphone16.x以后的系统浏览器自动将http请求切换为https请求了 工程自测 1.在ihone14 pro max,iOS16.1的手机上用http请求是失败的,在i ...

  7. COM 进程注入技术

    COM PROCESS INJECTION for RUST 项目地址:https://github.com/0xlane/com-process-inject Process Injection v ...

  8. Vue插槽最全最通俗的总结

    1.匿名插槽----就是定义的时候不带name的插槽,使用的时候也不用带name 总结: (1)一定要分清定义插槽和使用插槽格式.如上图A是在使用一个插槽的基础上再继续定义一个匿名插槽. (2)匿名插 ...

  9. Quarkus入门体验,22ms启动一个Web服务

    简介 Quarkus是类似于Spring Boot的框架,可以方便大家进行Java开发.利用GraalVM的魔力,能更好的适应云原生的场景,极快的启动速度. 创建项目 在IDEA就直接有创建Quark ...

  10. Java实现BP神经网络MNIST手写数字识别

    Java实现BP神经网络MNIST手写数字识别 如果需要源码,请在下方评论区留下邮箱,我看到就会发过去 一.神经网络的构建 (1):构建神经网络层次结构 由训练集数据可知,手写输入的数据维数为784维 ...