Vue2.0利用vue-resource上传文件到七牛的实例代码

下面是利用Vue2.0和vue-resource上传文件到七牛的实例代码的完整攻略。

安装vue-resource

首先,我们需要安装vue-resource。你可以在项目根目录运行以下命令安装:

npm install vue-resource --save

配置七牛

首先,你需要在七牛上创建一个存储空间,然后配置访问密钥和域名。你可以在 七牛开发者中心 中找到这些信息。

HTML部分

在HTML部分,你需要添加一个input元素,用于选择文件:

<input type="file" ref="uploadInput" @change="handleUpload">

并且你还需要添加一个button元素,用于上传文件:

<button type="button" @click="upload">上传</button>

Vue组件部分

首先,你需要在Vue组件的data中添加七牛的设置信息:

data () {
  return {
    qiniu: {
      url: 'https://upload.qiniup.com', // 七牛上传地址
      bucket: 'my-bucket-name', // 空间名
      AK: 'my-access-key', // AK
      SK: 'my-secret-key', // SK
      domain: 'http://example.com/' // 域名
    }
  }
}

然后,你需要实现一个方法,用于获取token:

getQiniuToken () {
  const url = 'your-token-api-url'
  // 通过axios获取token
  return axios.get(url)
  .then(res => {
    return res.data.token // 这里返回的是你从token接口返回的token字段
  })
}

接着,你需要实现一个方法,用于处理上传的文件:

handleUpload () {
  this.file = this.$refs.uploadInput.files[0]
},

然后,你需要实现上传方法:

upload () {
  const file = this.file
  if (!file) {
    this.$message.error('请选择图片')
    return
  }
  // 获取token
  this.getQiniuToken().then(token => {
    const formData = new FormData()
    formData.append('file', file)
    formData.append('token', token)
    // 文件上传
    this.$http.post(this.qiniu.url, formData, {
      headers: {'Content-Type': 'multipart/form-data'}
    }).then(response => {
      console.log('上传成功:', response.body)
      this.imageUrl = this.qiniu.domain + response.body.hash
    }, response => {
      console.log('上传失败:', response.message)
    })
  }, error => {
    console.log('获取Token失败:', error)
  })
}

示例

下面是两个基于该代码的示例:

示例1

该示例显示了如何在一个Vue组件中上传文件:

<template>
  <div>
    <input type="file" ref="uploadInput" @change="handleUpload">
    <button type="button" @click="upload">上传</button>
    <div>
      <img :src="imageUrl" alt="">
    </div>
  </div>
</template>

<script>
import axios from 'axios'
export default {
  data () {
    return {
      imageUrl: '',
      file: null,
      qiniu: {
        url: 'https://upload.qiniup.com', // 七牛上传地址
        bucket: 'my-bucket-name', // 空间名
        AK: 'my-access-key', // AK
        SK: 'my-secret-key', // SK
        domain: 'http://example.com/' // 域名
      }
    }
  },
  methods: {
    getQiniuToken () {
      const url = 'your-token-api-url'
      // 通过axios获取token
      return axios.get(url)
      .then(res => {
        return res.data.token // 这里返回的是你从token接口返回的token字段
      })
    },
    handleUpload () {
      this.file = this.$refs.uploadInput.files[0]
    },
    upload () {
      const file = this.file
      if (!file) {
        this.$message.error('请选择图片')
        return
      }
      // 获取token
      this.getQiniuToken().then(token => {
        const formData = new FormData()
        formData.append('file', file)
        formData.append('token', token)
        // 文件上传
        this.$http.post(this.qiniu.url, formData, {
          headers: {'Content-Type': 'multipart/form-data'}
        }).then(response => {
          console.log('上传成功:', response.body)
          this.imageUrl = this.qiniu.domain + response.body.hash
        }, response => {
          console.log('上传失败:', response.message)
        })
      }, error => {
        console.log('获取Token失败:', error)
      })
    }
  }
}
</script>

示例2

该示例显示了如何在一个原生JavaScript中使用该代码上传文件:

<template>
  <div>
    <input type="file" ref="uploadInput" @change="handleUpload">
    <button type="button" @click="upload">上传</button>
    <div>
      <img :src="imageUrl" alt="">
    </div>
  </div>
</template>

<script>
import axios from 'axios'
export default {
  data () {
    return {
      imageUrl: '',
      file: null,
      qiniu: {
        url: 'https://upload.qiniup.com', // 七牛上传地址
        bucket: 'my-bucket-name', // 空间名
        AK: 'my-access-key', // AK
        SK: 'my-secret-key', // SK
        domain: 'http://example.com/' // 域名
      }
    }
  },
  methods: {
    getQiniuToken () {
      const url = 'your-token-api-url'
      // 通过axios获取token
      return axios.get(url)
      .then(res => {
        return res.data.token // 这里返回的是你从token接口返回的token字段
      })
    },
    handleUpload () {
      this.file = this.$refs.uploadInput.files[0]
    },
    upload () {
      const file = this.file
      if (!file) {
        alert('请选择图片')
        return
      }
      // 获取token
      this.getQiniuToken().then(token => {
        const formData = new FormData()
        formData.append('file', file)
        formData.append('token', token)
        // 文件上传
        const xhr = new XMLHttpRequest()
        xhr.open('POST', this.qiniu.url, true)
        xhr.setRequestHeader('Content-Type', 'multipart/form-data')
        xhr.upload.onprogress = (event) => {
          if (event.lengthComputable) {
            const percent = Math.round((event.loaded / event.total) * 100)
            console.log(上传进度:${percent}%)
          }
        }
        xhr.onreadystatechange = () => {
          if (xhr.readyState === 4) {
            if (xhr.status === 200) {
              const result = JSON.parse(xhr.responseText)
              console.log('上传成功:', result)
              this.imageUrl = this.qiniu.domain + result.hash
            } else {
              console.log('上传失败: ', xhr.statusText)
            }
          }
        }
        xhr.send(formData)
      }, error => {
        console.log('获取Token失败:', error)
      })
    }
  }
}
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue2.0利用vue-resource上传文件到七牛的实例代码 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue 后台管理类项目兼容IE9+的方法示例

    当今很多浏览器都能很好地支持Vue框架,但是在一些特殊的环境中,我们还需要为IE9+这样的旧浏览器兼容Vue,本文将详细讲解如何在Vue后台管理类项目中兼容IE9+的方法。 方法一:添加Polyfill 我们可以给项目添加Polyfill,Polyfill是一种JavaScript代码,其能够为旧版浏览器提供一些现代浏览器中已经內建的功能。在Vue项目中,我…

    Vue 2023年5月28日
    00
  • spring boot实现图片上传和下载功能

    下面我将针对“spring boot实现图片上传和下载功能”的完整操作过程进行详细讲解,并提供两个示例以供参考。 准备工作 在开始实现图片上传和下载功能之前,我们需要先准备好开发环境和所需要的依赖。具体流程如下: 环境搭建 JDK 1.8及以上版本 Maven 3.2及以上版本 IDE开发工具(如Eclipse、IntelliJ IDEA等) 需要依赖 在M…

    Vue 2023年5月28日
    00
  • VUE的数据代理与事件详解

    VUE的数据代理与事件详解 数据代理 VUE中使用了 数据代理 的方式来进行数据绑定和更新。具体来说,当我们在VUE实例中的 data对象 上定义一个属性时,VUE会将该属性转化为getter和setter函数,并且将它们添加到VUE实例上。这样,每当我们通过VUE实例访问这个属性时,就会触发相应的getter或setter函数。 例如,我们在VUE实例中定…

    Vue 2023年5月28日
    00
  • Vue利用mockjs编写假数据并应用的问题记录

    我将为你详细讲解“Vue利用mockjs编写假数据并应用的问题记录”的完整攻略。 一、什么是Mock.js Mock.js是一款前端数据模拟生成工具,可以模拟各种数据类型的生成器,从最基本的文本、数字、布尔,到图片、颜色、地址等,还可以生成随机的JSON对象。 Mock.js利用简单的语法实现了数据自动生成,可根据自定义的规则生成符合条件的数据,模拟后端接口…

    Vue 2023年5月29日
    00
  • vue.config.js常用配置详解

    当你在Vue项目中需要自定义Webpack的配置时,可以通过在项目根目录下创建vue.config.js文件来实现。Vue CLI读取该文件,并根据其中的配置修改Webpack的默认配置以满足你的需要。以下是对vue.config.js文件的常用配置的详细说明。 基本配置 以下是最简单的vue.config.js文件: module.exports = { …

    Vue 2023年5月27日
    00
  • 详解vue.js 开发环境搭建最简单攻略

    详解vue.js 开发环境搭建最简单攻略 Vue.js 是一款流行的前端开发框架,它提供了组件化、响应式、可复用、易于集成的特性,可以有效地提升前端开发效率和质量。在开始开发 Vue.js 项目之前,我们需要配置好开发环境。本文将提供最简单的 Vue.js 开发环境搭建攻略,帮助你快速上手 Vue.js 开发。 安装 Node.js Vue.js 需要运行在…

    Vue 2023年5月27日
    00
  • vue 实现强制类型转换 数字类型转为字符串

    要在 Vue 中实现数字类型转为字符串的强制类型转换,可以通过以下两种方式实现: 1. 使用 JavaScript 中的 toString() 方法 JavaScript 中的 toString() 方法可将数字类型转为字符串。在Vue模板中,可以在绑定表达式时使用toString()方法强制类型转换。 示例如下: <template> <…

    Vue 2023年5月27日
    00
  • vue 如何打开接口返回的HTML文件

    当我们向服务器请求数据时,有时候会返回HTML文件,而如果要在Vue中直接显示这个HTML文件,需要经过以下步骤: 1.使用axios发送请求获取HTML文件内容 首先,需要在Vue组件中引入axios,并使用axios发送一个GET请求来获取HTML文件内容。我们可以使用axios的get方法,指定请求的URL即可。 示例代码如下: import axio…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部