<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. DRF之简介以及序列化操作

    1. Web应用模式. 在开发Web应用中,有两种应用模式: 前后端不分离 2.前后端分离 2. api接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实 ...

  2. sqlserver给指定用户授权访问指定表

    一.   背景 外部公司的人授权访问我们公司的数据库,数据接口调用,要给他们建立查看指定的视图和授权的账号,因此要在数据库中,给指定用户授权访问指定表 二.sqlserver 脚本 ---创建视图CR ...

  3. MVC实战之排球计分(一)—— 需求分析与数据库设计

    此系列博客目的是制作一款排球计分程序.这系列博客讲讲述此软件的 各个功能的设计与实现. 一.需求分析: 这个程序是排球计分程序,其业务非常简单,具体如下: 1.本程序可以选择用户身份,通过不同角度记录 ...

  4. 【Oracle】【3】字段自增长(+1)

    业务场景——解决方案 1,每插入一条数据,其排序字段要增长1 —— Service层查询出最大值,再+1(参考博客的方法是触发器) 2,子表插入一条数据,主表某字段+1 —— where A.ID = ...

  5. springBoot配置,贴个图

    spring: datasource: name: test url: jdbc:mysql://localhost:3306/epay?characterEncoding=UTF-8 usernam ...

  6. ActiveMQ 中的链表

    ActiveMQ 中的消息在内存中时,以链表形式保存,以 PendingList 表示,每一个消息是 PendingNode. PendingList 主要有2种实现:OrderedPendingLi ...

  7. 小程序-wepy学习

    组件通信与交互 推荐网址:https://tencent.github.io/wepy/document.html#/?id=%e7%bb%84%e4%bb%b6%e9%80%9a%e4%bf%a1% ...

  8. dvwa安装、配置、使用教程(Linux)

    一.搭建LAMP环境 首先搭建好LAMP环境,如没配好参见“Linux+Apache+MySQL+PHP配置教程” 或者使用官方推荐的XAMPP:https://www.apachefriends.o ...

  9. openssh允许root用户登录

    openssh默认是不允许root用户登录的,未改配置直接以正确的root账号密码登录会提示用户名密码错误之类. 好消息是openssh配置十分清晰,基本所有的服务端配置都在/etc/ssh/sshd ...

  10. Java技巧之双括弧初始化

    由于Java语言的集合框架中(collections, 如list, map, set等)没有提供任何简便的语法结构,这使得在建立常量集合时的工作非常繁索.每次建立时我们都要做: 定义一个临时的集合类 ...