vue+axios上传文件的几种方式及步骤(以上传图片为例)

vue+axios上传文件的几种方式及步骤(以上传图片为例)1、用js的formData对象上传(服务器返回url地址)<inputclass=”file”name=”file”type=”file”accept=”image/png,image/gif,image/jpeg”@change=”update”/>methods:{update(e){letfile=e.targe…

大家好,又见面了,我是你们的朋友全栈君。

1、用js的formData对象上传(服务器返回url地址)

<input class="file" name="file" type="file" accept="image/png,image/gif,image/jpeg" @change="update"/>

methods: {
      update(e){
        let file = e.target.files[0];
        let param = new FormData(); //创建form对象
        param.append('file',file);//通过append向form对象添加数据
        console.log(param.get('file')); //FormData私有类对象,访问不到,可以通过get判断值是否传进去
        let config = {
          headers:{'Content-Type':'multipart/form-data'} //这里是重点,需要和后台沟通好请求头,Content-Type不一定是这个值
        }; //添加请求头
        axios.post('http://127.0.0.1:8081/upload',param,config)
          .then(response=>{
            console.log(response.data);
          })
      }
    }

vue+axios上传文件的几种方式及步骤(以上传图片为例)

2、Form表单上传(服务器返回url地址)

<form>
    <input type="text" value="" v-model="name" placeholder="请输入用户名">
    <input type="text" value="" v-model="age" placeholder="请输入年龄">
    <input type="file" @change="getFile($event)">
    <button @click="submitForm($event)">提交</button>
</form>
	data: {
          name: '',
          age: '',
          file: ''
        },
        methods: {
          getFile(event) {
            this.file = event.target.files[0];
            console.log(this.file);
          },
          submitForm(event) {
            event.preventDefault();
            let formData = new FormData();
            formData.append('name', this.name);
            formData.append('age', this.age);
            formData.append('file', this.file);
 
            let config = {
              headers: {
                'Content-Type': 'multipart/form-data'
              }
            }
 
            axios.post('http://127.0.0.1:8081/upload', formData, config).then(function (response) {
              if (response.status === 200) {
                console.log(response.data);
              }
            })
          }
        }

注意:表单form加上属性enctype=”multipart/form-data”。客服端发送的头部就是:

Content-type: multipart/form-data, boundary=AaB03x--AaB03x//后面这个是浏览器假的随机值

提交成功客服端还能看到以下图片相关内容:

vue+axios上传文件的几种方式及步骤(以上传图片为例)

3、获取相机图片的base64

    /**
     * 获取用户拍照的图片信息
     */
    async Photograph() {
      // 获取用户拍照的图片名字,显示到页面上
      this.fileName = this.$refs.photoref.files[0].name;
      // 获取图片base64 代码,并存放到 base64ImgData 中
      this.base64ImgData = await this.FileReader(this.$refs.photoref.files[0]);
    },
    /**
     * 返回用户拍照图片的base64
     */
    FileReader(FileInfo) {
      // FileReader 方法参考地址:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
      let reader = new FileReader();
      // readAsDataURL 方法参考地址:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsDataURL
      reader.readAsDataURL(FileInfo);
      // 监听读取操作结束
      /* eslint-disable */
      return new Promise(
        resolve => (reader.onloadend = () => resolve(reader.result))
      );
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151185.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • git clone几种可选参数的使用与区别[通俗易懂]

    git clone几种可选参数的使用与区别[通俗易懂]背景githubclone代码的速度,依赖于代码库的大小以及clone速度,基本是几十kb到200kb之间。要是能达到400kb,恭喜你;要是只有十几kb,emmmm,还是先去吃饭吧。这里以MOOC为例说明在clone某个git仓库时候需要注意的几个问题。全克隆单一克隆深度克隆全克隆很好理解,gitclonegit_仓库_url。存在一个问题,当clone…

    2022年7月21日
    30
  • Pytest(15)pytest分布式执行用例[通俗易懂]

    Pytest(15)pytest分布式执行用例[通俗易懂]前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

    2022年7月29日
    10
  • 页面ValidateRequest=false设置在asp.net4.0下失效

    页面ValidateRequest=false设置在asp.net4.0下失效
    ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击。但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候ASP.NET2.0允许我们可以通过在web.config设置validateRequest=”false”。或者在MVC中,我们可以通过在Controller或者Action上设置[ValidateRequest(false)]这个特性来达到禁用的上的。但是在当你把站点从旧版本升级到ASP.NET

    2022年5月23日
    35
  • ES6 数组方法

    ES6 数组方法数组Array为了补充原始数组中某些方法的一些缺陷,ES6在数组方面新增许多API如Array.fromincludefill等等。Array.from()该API可以用来转换类数组与可便利对象将其转化为数组,比如function中的arguments对象(类数组),setmapes6新增的可遍历对象functiontest(){vararr=Array.from(arguments);console.log(arr);}test(1

    2022年6月10日
    28
  • java divide_java中awt做什么的

    java divide_java中awt做什么的gridx,gridy:设置组件的位置,从0开始gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。建议定义出gridx,gri…

    2025年9月1日
    4
  • 电脑键盘锁定怎么解锁笔记本_电脑键盘被锁如何解锁

    电脑键盘锁定怎么解锁笔记本_电脑键盘被锁如何解锁主流的笔记本厂商为了扩展键盘功能,为用户提供便捷的操作体验,给F1~F12增加了特定的快捷功能。默认情况下这些快捷功能需要按Fn+(F1~F12)来实现,不过经常使用快捷功能的用户可能需要锁定Fn键,使系统默认调用快捷功能,避免每次都要按Fn。一、戴尔、联想、小米,用Fn+Esc锁定/解锁如果笔记本Esc键的右下角有一个带fn标志的锁,说明这台笔记本适用…

    2022年8月13日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号