<template>
<div id="cxUpload" class="cx-upload">
<button id="pickfiles" class="uploadBtn">上传</button>
</div>
</template> <script>
// import $ from 'jquery'
// import "../../common/plugin/qiniu/moxie"
// import "../../common/plugin/qiniu/plupload.dev"
// import "../../common/plugin/qiniu/qiniu"
import * as tools from '../../common/js/app.js'
export default {
props: {
uptokenObj: Object
},
methods: {
upLoadQiniu() { // 加载七牛
let qiniuSetInter = setInterval(() => {
if (this.uptokenObj.upToken) {
this.initQiniu();
// 清除定时器
clearInterval(qiniuSetInter);
}
}, )
},
initQiniu() { // 初始化七牛
let self = this;
let uploader = Qiniu.uploader({
runtimes: 'html5,flash,html4', // 上传模式,依次退化
browse_button: 'pickfiles', // 上传选择的点选按钮,**必需**
// 其中 uptoken 是直接提供上传凭证,uptoken_url 是提供了获取上传凭证的地址,如果需要定制获取 uptoken 的过程则可以设置 uptoken_func
uptoken: this.uptokenObj.upToken, // uptoken 是上传凭证,由其他程序生成
get_new_uptoken: false, // 设置上传文件的时候是否每次都重新获取新的 uptoken
// Ajax请求downToken的Url,私有空间时使用,JS-SDK 将向该地址POST文件的key和domain,服务端返回的JSON必须包含`url`字段,`url`值为该文件的下载地址
unique_names: false, // 默认 false,key 为文件名。若开启该选项,JS-SDK 会为每个文件自动生成key(文件名)
save_key: false, // 默认 false。若在服务端生成 uptoken 的上传策略中指定了 `save_key`,则开启,SDK在前端将不对key进行任何处理
domain: this.uptokenObj.imgPath, // bucket 域名,下载资源时用到,如:'http://xxx.bkt.clouddn.com/' **必需**
container: 'cxUpload', // 上传区域 DOM ID,默认是 browser_button 的父元素,
max_file_size: '6mb', // 最大文件体积限制
flash_swf_url: 'path/of/plupload/Moxie.swf', //引入 flash,相对路径
max_retries: , // 上传失败最大重试次数
dragdrop: false, // 开启可拖曳上传
drop_element: 'cxUpload', // 拖曳上传区域元素的 ID,拖曳文件或文件夹后可触发上传
chunk_size: '4mb', // 分块上传时,每块的体积
filters: { //文件类型过滤,这里限制为图片类型
mime_types: [{
title: "Image files",
extensions: "jpg,jpeg,gif,png"
}]
// prevent_duplicates : false //不允许选取重复文件
},
auto_start: true, // 选择文件后自动上传,若关闭需要自己绑定事件触发上传,
init: {
'FilesAdded': function(up, files) {
plupload.each(files, function(file) {
// 文件添加进队列后,处理相关的事情 });
},
'BeforeUpload': function(up, file) {
// 每个文件上传前,处理相关的事情
},
'UploadProgress': function(up, file) {
// 每个文件上传时,处理相关的事情
},
'FileUploaded': function(up, file, info) {
// 每个文件上传成功后,处理相关的事情
// console.log('info+++++++++++++++');
// console.log(info);
// 其中 info 是文件上传成功后,服务端返回的json,形式如
// {
// "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
// "key": "gogopher.jpg"
// }
var domain = up.getOption('domain');
var res = eval('(' + info + ')'); // 获取上传成功后的文件的Url
// var sourceLink = domain + res.key;
// var symbolLink = self.uptokenObj.imgPlaceholder + res.key;
var linkObject = {
"sourceLink": domain + res.key,
"symbolLink": self.uptokenObj.imgPlaceholder + res.key
} self.$emit('get-path', linkObject);
},
'Error': function(up, err, errTip) {
//上传出错时,处理相关的事情
// console.log('失败----------');
},
'UploadComplete': function() {
//队列文件处理完毕后,处理相关的事情
},
'Key': function(up, file) {
// 若想在前端对每个文件的key进行个性化处理,可以配置该函数
// 该配置必须要在 unique_names: false , save_key: false 时才生效
// 获取当前时间戳
var timestamp = new Date().getTime();
var key = "image/cxw/" + timestamp + ".png";
// do something with key here
return key
}
} });
}
},
mounted() {
this.upLoadQiniu();
}
}
</script> <style lang="scss" scoped>
.cx-upload {
display: inline-block;
.uploadBtn {
width: 64px;
height: 30px;
color: #2f363c;
outline: none;
border: 2px solid #2f363c;
}
} @media screen and (max-width:648px) {
.cx-upload {
float: left;
}
}
</style>

vue中七牛插件使用的更多相关文章

  1. vue中使用第三方插件animate.css实现动画效果

    vue中使用第三方插件animate.css实现动画效果1.首先先引入第三方类animated.css2.将你所需要动画的标签用包裹起来3.在transition元素中添加enter-active-c ...

  2. Vue中的better-scroll插件

    Vue中的better-scroll插件 在需要的文件中添加 import BScorll from 'better-scroll'; 引用的示例代码: let scroll = new BScrol ...

  3. 在vue中使用天气插件

    在vue中使用天气插件 插件网址:  中国天气 选择自己需要的插件.生成代码复制即可 在 vue 中的使用: template 中 <div id="weather-v2-plugin ...

  4. vue中使用video插件vue-video-player

    一.安装插件 npm install vue-video-player --save 二.配置插件 在main.js中全局配置插件 import VideoPlayer from 'vue-video ...

  5. vue中使用vue-pdf插件显示pdf

    最近项目需求需要在vue中展示pdf,上网搜索了实现方法,找到vue-pdf这个插件非常好用,并且还有许多方法.属性能进行功能扩展. 一.安装 npm install --save vue-pdf 二 ...

  6. vue中如何开发插件

    1.vue中提供了install方法用来开发插件 官方:Vue.js 的插件应该有一个公开方法 install.这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象. 2.我的插件目 ...

  7. react 或 vue 中引用 jQuery 插件

    前言 今天与遇到一个令人抓狂的事情, 因为项目中有个交互太过于复杂而且冷门, 没有人封装类似react-swiper那种的移植过来的插件 只有现成的jQuery插件. 而时间并不宽裕,自己重写成rea ...

  8. vue中通过cross-env插件配置三种环境(开发,测试,生产)打包,不用切换api

    1. 话不多说,第一步就是安装必要的插件 npm install cross-env --save 2.修改config里面的参数,这里只展示一个test,其他类似 3.修改package.json ...

  9. vue中引入swiper插件

    这里我们使用npm的方式安装swiper插件. 1.npm install vue-awesome-swiper --save 2.在main.js文件中引入文件 import Vue from 'v ...

随机推荐

  1. http认证中的nonce与timestamp解释

    Nonce是由服务器生成的一个随机数,在客户端第一次请求页面时将其发回客户端:客户端拿到这个Nonce,将其与用户密码串联在一起并进行非可逆加密(MD5.SHA1等等),然后将这个加密后的字符串和用户 ...

  2. css中伪类与伪元素的区别

    一:伪类:1:定义:css伪类用于向某些选择器添加特殊效果. 伪类其实与普通的css类相类似,可以为已有的元素添加样式,但是他只有处于dom无法描述的状态下才能为文档树中的元素添加样式,所以将其称为伪 ...

  3. 1003. Check If Word Is Valid After Substitutions Medium检查替换后的词是否有效

    网址:https://leetcode.com/problems/check-if-word-is-valid-after-substitutions/ 参考:https://leetcode.com ...

  4. NOIP2003加分二叉树

    题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第ii个节点的分数为di,treedi,tree ...

  5. ubuntu16.10 中安装mysql

    1.安装MYSQL: root@ubuntu:~# sudo apt-get install mysql-server root@ubuntu:~# apt isntall mysql-client ...

  6. Win10系列:VC++调用自定义组件1

    通过20.9.1小节中的代码和步骤编写了一个名为"FilePickerComponent"的WinRT组件,接下来将在上一小节所新建的项目基础上,继续介绍如何在不同的语言所编写的应 ...

  7. HTML5 ①

    <!DOCTYPE html> <!--声明当前页面是H5--> html框架: <html> <head lang="en"> & ...

  8. 稀疏 部分 Checkout

    To easily select only the items you want for the checkout and force the resulting working copy to ke ...

  9. Linux Shell 编程 教程 常用命令

    概述: Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户 ...

  10. npm login npm publish报错

    . 把那个文件删除就好了 查看npm是淘宝的还是原始的 npm config get registry 如果是淘宝的要退回到原始的 npm config set registry=http://reg ...