用vue的element-ui的upload实现上传头像图片资源到七牛云

通过element-ui的upload实现上传资源到七牛云功能的时候遇到了很多问题,现在和大家分享出来。

一、上传头像组件com_user_head_upload.vue:

<template>

<div>

<el-upload

class="avatar-uploader"

:action="qiniu.actionPath"

:show-file-list="false"

:data="qiniu.postData"

accept="image/*"

:on-success="handleAvatarHeadSuccess"

:before-upload="beforeAvatarHeadUpload"

:on-change="imageCardOneChange"

:file-list="headList">

<div class="uploadDemoBox">

<i class="addIcon">+</i>

<i class="message">点击上传</i>

</div>

</el-upload>

</div>

</template>

 

<script>

import {mapGetters,mapActions,mapMutations } from 'vuex'

import {qiniuTokenCreate} from "@/assets/js/qiniu/qiniuTokenCreate"

import { createUserHead } from '@/api/resource'

import { Message } from 'element-ui'

export default {

props: {

},

data () {

return {

headList:[],

// 头像上传

userHeadImg: '',

// 七牛云上传

qiniu:{

actionPath:'https://upload.qiniup.com/', // 放七牛云的地址

imageUrl: '',

postData:{

'token':'',

'domain':'',

}

},

}

},

computed:{

...mapGetters({

editor_id:'editor_id',

organization_id:'organization_id'

}),

},

methods: {

...mapActions([

'createUserHeadAction',

]),

...mapMutations([

'createUserHeadMutations',

'createImageListMutations',

]),

imageCardOneChange(file, fileList){

let timestamp = (new Date()).valueOf(); //时间戳

// 加上时间戳,防止,当所上传的文件已存在而报614错误的问题

this.qiniu.postData.key = timestamp + '/' + file.name

let str=file.name.substr(0,10)+"..."

fileList[0].name=str

//七牛koken

let token=qiniuTokenCreate('image')

this.qiniu.postData.token=token;

//设置资源访问地址

this.qiniu.postData.domain="http://image.i.haierzhongyou.com/"

},

handleAvatarHeadSuccess(res, file,fileList) {

let key=null

let resKey=res.key

if(resKey.indexOf(".png") != -1){

key=res.key.replace(".png","")

}else if(resKey.indexOf(".jpg") != -1){

key=res.key.replace(".jpg","")

}else if(resKey.indexOf(".gif") != -1){

key=res.key.replace(".gif","")

}else if(resKey.indexOf(".b

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在你的 Vue 项目中安装 `qiniu-js` 包,这个包可以帮助你将文件上传七牛云。 安装命令:`npm install qiniu-js` 然后,在你的 Vue 组件中引入 `qiniu-js` 包,代码如下: ``` import * as qiniu from 'qiniu-js' ``` 接下来,我们需要实现异步上传文件到七牛云的功能。假设我们已经有一个上传文件的方法 `handleUpload`,代码如下: ``` handleUpload(file) { const token = 'your-qiniu-upload-token' // 替换成你的七牛云上传凭证 const key = file.name // 文件名作为七牛云存储的文件名 const config = { useCdnDomain: true, // 是否使用七牛云的 CDN 域名 } const putExtra = { fname: file.name, // 文件原始名字 params: {}, // 上传额外参数 mimeType: null // 上传文件类型 } const observable = qiniu.upload(file, key, token, putExtra, config) const observer = { next(res) { // 上传进度回调 console.log(res.total.percent) }, error(err) { // 上传失败回调 console.log(err) }, complete(res) { // 上传成功回调 console.log(res) } } const subscription = observable.subscribe(observer) // 执行上传操作 } ``` 在上面的代码中,我们通过 `qiniu.upload` 方法来执行文件上传操作,参数依次为: - `file`: 要上传的文件对象 - `key`: 上传七牛云后的文件名 - `token`: 七牛云上传凭证 - `putExtra`: 上传额外参数,包括文件名、上传参数和文件类型 - `config`: 上传配置,包括是否使用七牛云的 CDN 域名 在上传过程中,我们通过观察者模式来监听上传进度、上传成功和上传失败事件,并执行相应的回调函数。 最后,你可以在你的组件中调用 `handleUpload` 方法来上传文件,例如: ``` <el-upload action="" :before-upload="handleUpload" > <el-button type="primary">点击上传</el-button> </el-upload> ``` 在上面的代码中,我们使用了 Element UI上传组件,并将 `before-upload` 属性设置为 `handleUpload` 方法,这样就可以触发文件上传操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值