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);
           });
    },
  • 相关阅读:
    oracl遇到的问题
    Ubuntu安装pyucharm的专业版本
    android adb logcat详解(三)
    android monkey压力测试(二)
    android adb常用命令(一)
    python *args 与 **kwargs
    python中带有下划线的变量和函数
    如何区分Python package
    Python Importlib.import_module动态导入模块
    python os.path.dirname(__file__)
  • 原文地址:https://www.cnblogs.com/siyecao2010/p/11408555.html
Copyright © 2011-2022 走看看