七牛js SDK上传问题

我用七牛js skd上传文件,却总是报qiniu.js:663 Uncaught TypeError: Cannot read property 'isExpired' of undefined(…)问题出在plupload,js中
z这是我的代码

var uploader = Qiniu.uploader({
        runtimes: 'html5,flash,html4',
        browse_button: 'pickfiles',
        container: 'container',
        drop_element: 'container',
        max_file_size: '1000mb',
        flash_swf_url: 'bower_components/plupload/js/Moxie.swf',
        dragdrop: true,
        chunk_size: '4mb',
        multi_selection: !(mOxie.Env.OS.toLowerCase()==="ios"),
        //uptoken_url: $('#uptoken_url').val(),
        save_key:false,
        unique_names:false,
        uptoken_func: function(){
            var token;
            $.ajax({
                url:$('#uptoken_url').val(),
                async:false
            }).done(function (data) {

                token= data.result.data.tokenValue;
            });
            return token;
        },
        domain: $('#domain').val(),
        get_new_uptoken: true,
        // downtoken_url: '/downtoken',
        // unique_names: true,
        // save_key: true,
        // x_vars: {
        //     'id': '1234',
        //     'time': function(up, file) {
        //         var time = (new Date()).getTime();
        //         // do something with 'time'
        //         return time;
        //     },
        // },
        auto_start: true,
        log_level: 5,
        init: {
            'FilesAdded': function(up, files) {
                var maxFileSize=1;
                if(up.files.length>maxFileSize){
                    alert("你只能上传一个文件");
                    up.splice(maxFileSize);
                    return;
                }
                $('table').show();
                $('#success').hide();
                plupload.each(files, function(file) {
                    var progress = new FileProgress(file, 'fsUploadProgress');
                    progress.setStatus("等待...");
                    progress.bindUploadCancel(up);
                });
            },
            'BeforeUpload': function(up, file) {
                var progress = new FileProgress(file, 'fsUploadProgress');
                var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
                if (up.runtime === 'html5' && chunk_size) {
                    progress.setChunkProgess(chunk_size);
                }
            },
            'UploadProgress': function(up, file) {
                var progress = new FileProgress(file, 'fsUploadProgress');
                var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
                progress.setProgress(file.percent + "%", file.speed, chunk_size);
            },
            'UploadComplete': function() {
                $('#success').show();
            },
            'FileUploaded': function(up, file, info) {
                var progress = new FileProgress(file, 'fsUploadProgress');
                progress.setComplete(up, info);
            },
            'Error': function(up, err, errTip) {
                $('table').show();
                var progress = new FileProgress(err.file, 'fsUploadProgress');
                progress.setError();
                progress.setStatus(errTip);
            }
        }
    });

这是我从服务端获取token的方法

  public String getToken(Model model){
        AjaxResult result=new AjaxResult();
        String fileName= UUIDGenerator.getUUID();
        QiniuUploadUtils qiniuUploadUtils=new QiniuUploadUtils();
        HashMap token=new HashMap();
        token.put("tokenValue",qiniuUploadUtils.getToken(fileName));
        token.put("file",fileName);
        result.setData(token);
        model.addAttribute("result",result);
        return this.result(ResultType.JSON);
    }
阅读 8.5k
4 个回答

是否有公网访问的测试地址?

我也出现这个问题。

前提是你只设置uptoken,并没有设置uptoken_url,然后上传超过你设置的分块大小(默认4M)大小的文件,并且在html5或则flash下,就会触发该报错。

我认为是官方的bug

方案一:
https://github.com/qiniu/js-s...这个链接里面,有暴力解决方案

方案二:
把uptoken_url填上

由此得出::::::::七牛就是个垃圾。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
七牛云问答
子站问答
访问
宣传栏