axios文件上传下载

文件上传

1 <input type="file" @change="upload($event)" />
 1  // 引入axios
 2  import axios from 'axios'
 3   
 4  // 配置axios
 5  const instance = axios.create({
 6      baseURL: 'http://127.0.0.1:3000',      //服务器地址
 7    headers: {
 8        'Content-Type': 'multipart/form-data'       // 设置为文件类型
 9    } 
10  })
11  
12  const typeArr = ['txt','png','rar']   // 可上传的文件类型
13  let formData = new FormData()   
14  
15  upload: function(event){
16    let file = event.target.files[0]     //  获取文件
17    let type = file.name.split('.')[1]  // 获取文件类型
18    if(typeArr.indexOf(type) < 0){
19       console.log('上传的文件类型有误')
20       return  
21    }
22    
23    let size = file.size                // 文件大小
24    if(size / (1024 * 1024) > 5){
25      console.log('文件不能大于5M')
26       return
27    }
28  
29    formData.append('file', file, file.name)
30    instance.post('upload/file',formData).then(res => {
31      if(res.data.code === 0) {
32         console.log('文件上传成功')
33         formData.value = null     // 清空 input 框
34      }   
35    })
36  }  

文件下载

 1   // 引入axios
 2   import axios from 'axios'
 3   
 4   download:function(){
 5     axios({
 6       mtehod: 'post',
 7       url: 'http://127.0.0.1:3000/file',
 8      headers: {
 9         Accept: '*/*'          // 接收任意类型的文件
10      },
11      responseType: 'blob' ,      // 接收数据类型为 blob类型
12      data: null
13    }).then(res => {
14      let blob = res.data         // 接收到的数据
15  
16      let eleLink = document.createElement('a')   // 创建 a标签
17      let url = window.URL.createObjectURL(blob)   // 创建url对象 指向blob
18      eleLink.href = url        // 设置a标签的href属性
19      eleLink.download = `文件名字.txt`          // 下载的文件名 后缀名与后台约定
20      document.body.appendChild(eleLink)   // 将a标签添加到文档中
21      eleLink.click()    //执行点击事件 开始下载
22      window.URL.revokeObjectURL(url)    // 释放指定的url
23    })
24 }

 

posted @ 2020-06-08 11:10  不复  阅读(1096)  评论(0编辑  收藏  举报