vue中七牛插件使用

<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);
                    }
                }, 1000)
            },
            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: 1, // 上传失败最大重试次数
                    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>
时间: 2024-11-08 21:27:42

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

Vue中的better-scroll插件

Vue中的better-scroll插件 在需要的文件中添加 import BScorll from 'better-scroll'; 引用的示例代码: let scroll = new BScroll(Dom对象, {//options startX: 0, startY: 0 }) Vue获得Dom对象方法, <div v-el:food-wrapper></div>//定义对象 this.$els.foodWrapper//获取对象 (Vue 更新数据时是异步的,所以在数据未

在vue中利用vue-qr插件动态生成二维码并嵌入LOGO

收到需求要生成二维码的时候刚进项目组不久,接触vue也才一两个星期,还处于懵逼状态. 本小白的第一反应就是百度二维码的生成方法,网上有很多大神给出解决方案,最开始本小白以为是在后台生成图片然后传到前台页面,后来发现可以直接在前端用js生成,网上查到的大部分都是用jquery.qrcode.js配合utf.js(为了支持中文)和jquery-1.8.0.js来实现,亲测可行(但本白只在原生HTML中实现,vue中死活报错:"找不到qrcode方法",是不是本小白没找准姿势,哪位大神求告知

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

项目需求需要在vue中展示pdf,vue-pdf这个插件非常好用,并且还有许多方法.属性能进行功能扩展. 一, 安装依赖 npm install --save vue-pdf 二, 基本示例 <template> <div class="pdf"> <pdf ref="pdf" :src="pdfUrl"> </pdf> </div> </template> <scri

vue中引入swiper插件

这里我们使用npm的方式安装swiper插件. 1.npm install vue-awesome-swiper --save 2.在main.js文件中引入文件 import Vue from 'vue' import VueAwesomeSwiper from 'vue-awesome-swiper' 3.然后注册全局的swiper Vue.use(VueAwesomeSwiper) 4.在模板中使用 //引入swiper.cssrequire('swiper/dist/css/swiper

解决几个vue中是swiper插件遇到的bug

1.在使用swiper插件的时候,如果内容都是静态资源的话不会出现错误,但是动态的话会出现划不动,或者白屏 分析:这种bug是怎样出现的,一般都是初始化的位置不对 方法: swiperInit() { var mySwiper = new Swiper('.swiper-container', { pagination : '.swiper', paginationType : 'bullets', autoplay : 200, }) } //这个是swiper的初始化方法,如果你是在crea

VUE中使用的插件有哪些?为什么,不能自动补全,script,methods和export default?

老师就推荐了一个vue插件,叫vetur,但是为什么,不能自动补全,script,methods和export  default? 步骤 1. 先安装好 vetur 2. cmmond + , 在右侧配置相中添加如下代码(这个怎么找啊,草) "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" } 另一种配置是 在设置中 搜索emmet 然后

vue中使用jquery插件

(1)使用npm下载安装依赖 直接npm  install  '插件名称' --save   安装依赖 在main.js中引入插件的样式 在页面中直接使用 (2)直接将js文件引入到项目中 先将js文件拷到项目中 在index.html中引入 <script type="text/javascript" src="/public/js/dist/calendar.min.js"></script> 填写路径的时候注意: 在webpaclk.c

Vue中实现与后台的数据交换(vue-resource)

vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应.(但是目前它已经停止更新了) 1.在vue中安装vue-resource插件 打开vue项目文件夹下的package.json 添加vue-resource版本 再打开src下的main.js文件,import一下vue-resource 然后运行一下vue的项目,项目会提示你下载vue-resource插件,npm install一下即可 2.创建一个新的vue页面,用来测试

vue使用富文本编辑器vue-quill-editor实现配合后台将图片上传至七牛

一.全局注册:main.js import Vue from 'vue' import VueQuillEditor, { Quill } from 'vue-quill-editor' import { ImageDrop } from 'quill-image-drop-module' import ImageResize from 'quill-image-resize-module' import 'quill/dist/quill.core.css' import 'quill/dis