zoukankan      html  css  js  c++  java
  • 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 {
                 64px;
                height: 30px;
                color: #2f363c;
                outline: none;
                border: 2px solid #2f363c;
            }
        }
        
        @media screen and (max-648px) {
            .cx-upload {
                float: left;
            }
        }
    </style>
  • 相关阅读:
    属性绑定与双向数据绑定
    vue基础
    tp5提交留言入库
    tp5表单提交
    TP5分页
    TP5模板与数据组合
    vue3.x使用Proxy做双向数据绑定总结
    vue2.x响应式原理总结
    HTML5移动端自适应解决方案
    springMVC实现文件上传
  • 原文地址:https://www.cnblogs.com/zsongs/p/7084158.html
Copyright © 2011-2022 走看看