zoukankan      html  css  js  c++  java
  • vue 上传图片 input=file

    转自:https://www.cnblogs.com/dudu123/p/10215813.html

     
    <input
      type="file"
      accept="image/png,image/jpeg,image/gif,image/jpg"
      @change="uploadImg"
      ref="uploaderImg"
    >

     一、逻辑

    点击li触发事件chooseImage 即触发input标签事件photoChange

    input标签事件photoChange

    file返回的是如下变量

    模拟上传表单方法

     执行上传

    二、代码

    <li class="scroll-item first-item" @click="chooseImage">
        <i class="iconPhoto"></i>
        <span class="title">拍照</span>
        <input @change="photoChange($event)" type="file" id="upload_file" multiple style="display: none"/>
    </li>
    复制代码
          chooseImage(){
                  document.getElementById('upload_file').click(); //触发input-file文件上传控件 事件photoChange
           },
                photoChange(el) {
                    var file = el.target.files[0];//name: "dangqi1.png" || type: "image/png"
                    var type = file.type.split('/')[0];
                    if ( type === 'image' ){
                        //将图片img转化为base64
                        var reader = new FileReader();
                        reader.readAsDataURL(file);
                        var that = this;
                        reader.onloadend = function () {
                            var dataURL = reader.result;
                            var blob = that.dataURItoBlob(dataURL);
                            that.upload(blob); //执行上传接口
                        };
                    }else{
                        alert('上传了非图片');
                    }
                },
                dataURItoBlob (dataURI) {
                    // base64 解码
                    let byteString = window.atob(dataURI.split(',')[1]);
                    let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
                    let T = mimeString.split('/')[1];
                    let ab = new ArrayBuffer(byteString.length);
                    let ia = new Uint8Array(ab);
                    for (let i = 0; i < byteString.length; i++) {
                        ia[i] = byteString.charCodeAt(i);
                    }
                    return new Blob([ab], {type: mimeString});
                },
                upload(imgUrl){
              let formData = new FormData();
              formData.append('file', file);
              this.$axios({
               method:'POST',
               url:'路径',
               headers: {
                'Content-Type':'multipart/form-data',//设置请求头请求格式为JSON
               },
               data: formData
              }).then((response)=>{
             console.log("response",response);
           });
    },
  • 相关阅读:
    SQL语句建表、设置主键、外键、check、default、unique约束
    郝斌老师的SQL教程
    Hello WPF!
    指针
    穷举法破解 zebrone1.1
    一条汇编指令引发的 蝴蝶效应 (后记)
    浮点 汇编指令基础知识
    收敛数列极限唯一性证明
    MFC SkinMagic使用方法
    Python初学1
  • 原文地址:https://www.cnblogs.com/siyecao2010/p/11408555.html
Copyright © 2011-2022 走看看