在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{
    width:200px;
    height:200px;
    margin:0 auto;
    border: 1px solid #0f0;
  }
  .texts{
    width:100%;
    margin:10px 0 0;
    text-align: center;
  }
  .upbox{
    width:100%;
    margin:0 auto;
    text-align: center;
  }
  .auto-img{
    display: block;
    width:100%;
  }
  .upload{
    margin:30px 0;
  }
  .box1{
    width:100%;
  }
</style>

关于vue使用form上传文件的更多相关文章

  1. c# 模拟表单提交,post form 上传文件、大数据内容

    表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参数,这个参数是由应用程序自行产生,它会用来识别每 ...

  2. c# 模拟表单提交,post form 上传文件、数据内容

    转自:https://www.cnblogs.com/DoNetCShap/p/10696277.html 表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipar ...

  3. 通过form上传文件(php)

    前段代码 <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  4. form上传文件以及跨域异步上传

    要设置了enctype属性才能上传,需要使用上传的jar包,这里使用的是cos-26Dec2008.jar, 而且后台获取值的时候,getfile要放在第一位 一次设置好上传格式后没有上传文件,也就没 ...

  5. 关于form 上传文件时的小问题

    平时的form一般写成这样: <form action=" " method="" id="" name=""&g ...

  6. 使用vue+iview实现上传文件及常用的下载文件的方法

    首先说明一下,我们这次主要用的还是iview的upload上传组件,下面直接上代码 <Upload ref="upload" multiple='true' //是否支持多文 ...

  7. iframe+form上传文件

    <iframe id="iframe1" name="ifra1" style="display: none"></ifr ...

  8. VUE -- 用组件上传文件和用xmlrequest上传

    xmlrequest: sendForm(str, types) { var form = this.$refs.ipas_form; var oOutput = document.querySele ...

  9. vue.js异步上传文件前后端代码

    上传文件前端代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&q ...

随机推荐

  1. Python_自定义栈

    customStack.py '''栈:是一种运算受限的线性表,其特点在于仅允许在一端进行元素的插入和删除操作,最后入栈的最先出栈,而最先入栈的元素最后出栈''' s = [] s.append(3) ...

  2. 关于dropout的有趣的进化论解释

    训练神经网络时,使用dropout技术来防止网络的过拟合.我们这里且不谈这个技术的细节,但就这项技术的有趣的生物进化论解释了解下.自然界的高等生物进化出了两性繁殖,其原因可以解释为使得变异的基因能散播 ...

  3. 第二章之S5PV210在BL1中点亮LED灯

    1,u-boot中第一个入口在./arch/arm/cpu/armv7/start.S 翻到153行:如下图 前面都是进行一些基本设置,不用管. cpu_init_cp15设置协处理器, cpu_in ...

  4. 微信小程序-获取经纬度

    微信小程序-获取经纬度 最近公司新功能 要求在外的市场人员 发送位置信息回来. 用的还是微信小程序开发.... 微信小程序 提供一个接口 getLocation 这个接口反回来的位置 相对实际位置 相 ...

  5. 一张图搞定OAuth2.0

    1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常简单的一件事情,网上一堆神乎其神的讲解,让我不得不写一篇文章来终结它们. 一项新的技术,无非就是了解它是什么,为什 ...

  6. PAT1107:Sum of Number Segments

    1104. Sum of Number Segments (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Pen ...

  7. Linux时间子系统之(十六):clockevent

    专题文档汇总目录 Notes:介绍struct clocke_event_device及其功能feature.模式:触发event接口clockevents_program_event:clockev ...

  8. sql server 死锁排查

    记得以前客户在使用软件时,有偶发出现死锁问题,因为发生的时间不确定,不好做问题的重现,当时解决问题有点棘手了. 现总结下查看死锁的常用二种方式: 第一种是图形化监听: sqlserver --> ...

  9. javaweb项目部署到tomcat服务器

    http://jingyan.baidu.com/album/a501d80c0c65baec630f5ef6.html?picindex=8

  10. Yii整合ucenter实现单点登录

    原文:http://www.php2.cc/article-1349-1.html 准备工作 1.下载ucenter源码,并安装好 2.下载ucenter开发源码,根据自己的项目下载对应版本(utf- ...