work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Vue 使用axios分片上传

Posted on 2019-05-31 15:03  work hard work smart  阅读(1291)  评论(0编辑  收藏  举报

Vue的界面

 <input type="file"/>

  

上传方法

    fileUpload: function () {
      var num = 1
      var file = document.querySelector('input[type=file]').files[0]
      // var file = $("#file")[0].files[0];
      // this.msg.split('').reverse().join()
      // 声明一个FormData对象
      var formData = new FormData()
      var time = new Date().getTime()
      // 每片文件大小为5M
      var blockSize = 5 * 1024 * 1024
      var blockNum = Math.ceil(file.size / blockSize)
      var nextSize = Math.min(num * blockSize, file.size)
      var fileData = file.slice((num - 1) * blockSize, nextSize)
      formData.append('file', fileData)
      // 文件名
      formData.append('name', file.name)
      // 总片数
      formData.append('chunks', blockNum)
      formData.append('md5', time)
      formData.append('uid', '13570')

      let config = {
        headers: {
          'Content-Type': 'multipart/form-data;boundary = ' + new Date().getTime()
        }
      }

      axios.post('http://xxx/fileUpload', formData, config)
        .then(response => (
          this.info = response
        ))
        .catch(function (error) { // 请求失败处理
          console.log(error)
        })
    }