• 关于vue使用form上传文件


    在vue中使用form表单上传文件文件的时候出现了一些问题,获取文件的时候一直返回null,

    解决之后又出现发送到后台的file文件后台显示为空,解决源码

    <template>
      <div>
        <Row>
          <Col :sm="24" :md="24" lg:="24">

            <form id="myForm" enctype="multipart/form-data" name="fileinfo" action="" target="uploadFrame">  //这里设置目标为iframe的name,这样提交表单数据的时候就不会刷新页面
              <div class="img-file">
                <label>请选择上传的文件:</label>
                <input @change='changeImg' id='imgFile' type='file'/>
                <!-- <input id="submit" type="submit" value="确认上传" /> -->
              </div>
            </form>
            <iframe id="uploadFrame" name="uploadFrame" style="display:none;"></iframe>  //解决form表单提交数据刷新问题

            <!-- 展示服务器返回的图片 -->
            <div class="box1">
              <div class="imgbox">
                <img class="auto-img" :src='srcs' :id='ids'/>
              </div>
              <div class="texts" :dates="dates">{{dates}}</div>
            </div>
          </Col>
        </Row>
      </div>
    </template>

    <script>
      import Cookies from 'js-cookie';
      import axios from 'axios';
      import qs from 'qs';
      export default{
        data(){
          return{
            //默认图片地址,地址通过动态修改
            srcs: 'http://test.laihaiqiang.com/image/timg.jpg', 
            // 图片id ,为了避免和标签的id冲突,尽量使用别称,如id1,ida等。
            ids: 0,
            // 创建时间
            dates: '',

            //文件
            file: null,
          }
        },
        methods:{
          changeImg(){
            var that = this;  //这里使用一个变量 that来拼接this,这样的话在内部就使用thar,在外部就使用this,这样就不会出现指向丢失问题。
            var file = document.getElementById("imgFile").files[0]; //获取文件
            that.file = file;  //获取data里面的预设默认file,并把获取到的文件赋给它 
            var ids = this.ids; //获取ata里面的id

            var formData = new FormData(); //构造一个 FormData,把后台需要发送的参数添加到FormData里面,这样就可以直接把formData作为参数传递了
            if (file) {
              formData.append("access_token", Cookies.get('Admin-Token')); //接口需要传递的参数
              formData.append("img", file);   //接口需要传递的参数
              formData.append("id", ids);    //接口需要传递的参数
            }

            let potss = formData;
            let urls = 'http://...........................';   //数据接口
            axios.post(urls, potss)
            .then(function(reh){
              console.log('rehsdddddd===>>>', reh);
            })
            .catch(function(err){
              console.log('err=ssss=>>', err);
            })
          },
        },
        created : function(){
          var that = this;
          console.log('1234567890987654321 ==> ', this.file);
          let postToken = qs.stringify({
           access_token : Cookies.get('Admin-Token'),
          })
          let api = 'http://.....................................................';
          axios.post(api, postToken)
          .then(function(res){
            console.log('resss===>>>', res);
            console.log('code===>>>', res.data.code);
            console.log('message===>>>', res.data.message);
            console.log('logo图片地址==>>', res.data.data.img_url);
            console.log('logo图片id==>>', res.data.data.id);
            console.log('logo图片创建日期==>>', res.data.data.create_time);

            // 修改图片的路径
            that.srcs = res.data.data.img_url;
            //图片创建时间
            if(res.data.data.create_time == '' || res.data.data.create_time == null){
              that.dates = '';
            }else{
              that.dates = '添加时间:' + res.data.data.create_time;
            }
            //图片id
            that.ids = res.data.data.id;

          })
          .catch(function(err){
            console.log('err=ssss=>>', err);
          })
        }
      }
    </script>

    <style scoped>
      .imgbox{
        200px;
        height:200px;
        margin:0 auto;
        border: 1px solid #0f0;
      }
      .texts{
        100%;
        margin:10px 0 0;
        text-align: center;
      }
      .upbox{
        100%;
        margin:0 auto;
        text-align: center;
      }
      .auto-img{
        display: block;
        100%;
      }
      .upload{
        margin:30px 0;
      }
      .box1{
        100%;
      }
    </style>

  • 相关阅读:
    muduo库源码剖析(一) reactor模式
    POSIX 线程编程(二)线程建立与终止
    visual assist常用快捷键
    Linux下 静态链接库 和 动态链接库
    linux(Ubuntu)下mysql字符集完美解决
    共享内存解读
    hdu2829
    hdu3525
    2013ACM-ICPC亚洲区南京站现场赛G题
    poj1487
  • 原文地址:https://www.cnblogs.com/hermit-gyqy/p/10761547.html
Copyright © 2020-2023  润新知