欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

javascript - 上传失败 token not specified

程序员文章站 2022-06-14 22:57:54
...
同样的代码
在www.a.com 下上传正常
在www.b.com 下,相同的代码,通过www.a.com 拿到token 上传报错 error: "token not specified

uptoken_func 下uptoken 返回了空值之后才被 ajax 回调过来的数据赋值,所以上传的时候 token 为空


var qiniu_up = qiniu.uploader({
            runtimes : 'html5,flash,html4',
            browse_button : 'qiniu_browse',
            get_new_uptoken: true,
            unique_names: false,
            save_key : true,
            domain : '',
            container : 'container',
            max_file_size: '4mb',
            flash_swf_url : '',
            silverlight_xap_url : '',
            max_retries: 1,
            dragdrop: false,
            drop_element : 'container',
            chunk_size : '4mb',
            auto_start: false, /*不开启自动上传*/
            multi_selection: false, /*设置为只能选择单个文件*/
            filters : {
                mime_types : [{title : 'Image files', extensions : 'jpg,jpeg,gif,png,bmp'},{title : 'Voice files', extensions : 'mp3,wav'}]
            },
            init : {

            },
            uptoken_func: function(file){
              var uptoken = '';
              var media_info = '[{"directory": "1","directory_class": "","up_file_name": "'+file.name+'","media_type": "1"}]';
                 $.ajax({
                     type : "post",
                     async : false, /*必须使用同步*/
                     url : '',
                     data : {
                         app_version : '1.0',
                         app_target : 3,
                         sdk_version : '1.0',
                         plat : 'other',
                         media_info : media_info
                     },
                     dataType : "jsonp",
                     jsonp: "jsonpCallback",
                     success : function(data){
                         if(data.code == '1') {
                             var list = data.data.uptoken_list;
                             uptoken = list[0]['uptoken'];
                             media_id = list[0]['media_id'];
                         } else {
                             alert(data.message);
                         }
                     },  
                     error : function(XMLHttpRequest, textStatus, errorThrown){  
                        
                     }  
                 });
                return uptoken;
            }
        });

回复内容:

同样的代码
在www.a.com 下上传正常
在www.b.com 下,相同的代码,通过www.a.com 拿到token 上传报错 error: "token not specified

uptoken_func 下uptoken 返回了空值之后才被 ajax 回调过来的数据赋值,所以上传的时候 token 为空


var qiniu_up = qiniu.uploader({
            runtimes : 'html5,flash,html4',
            browse_button : 'qiniu_browse',
            get_new_uptoken: true,
            unique_names: false,
            save_key : true,
            domain : '',
            container : 'container',
            max_file_size: '4mb',
            flash_swf_url : '',
            silverlight_xap_url : '',
            max_retries: 1,
            dragdrop: false,
            drop_element : 'container',
            chunk_size : '4mb',
            auto_start: false, /*不开启自动上传*/
            multi_selection: false, /*设置为只能选择单个文件*/
            filters : {
                mime_types : [{title : 'Image files', extensions : 'jpg,jpeg,gif,png,bmp'},{title : 'Voice files', extensions : 'mp3,wav'}]
            },
            init : {

            },
            uptoken_func: function(file){
              var uptoken = '';
              var media_info = '[{"directory": "1","directory_class": "","up_file_name": "'+file.name+'","media_type": "1"}]';
                 $.ajax({
                     type : "post",
                     async : false, /*必须使用同步*/
                     url : '',
                     data : {
                         app_version : '1.0',
                         app_target : 3,
                         sdk_version : '1.0',
                         plat : 'other',
                         media_info : media_info
                     },
                     dataType : "jsonp",
                     jsonp: "jsonpCallback",
                     success : function(data){
                         if(data.code == '1') {
                             var list = data.data.uptoken_list;
                             uptoken = list[0]['uptoken'];
                             media_id = list[0]['media_id'];
                         } else {
                             alert(data.message);
                         }
                     },  
                     error : function(XMLHttpRequest, textStatus, errorThrown){  
                        
                     }  
                 });
                return uptoken;
            }
        });

看楼主的代码 好像是往七牛CDN上面上传文件
token的问题 楼主可以看看是不是JS跨域问题 你也可以看看七牛的开发文档 或者 联系七牛的技术人员联调一下

uptoken_func 下的ajax 跨域了以后他的运行顺序变了 所有的程序都执行完了才执行到success 下的uptoken 的被赋值,所以上传上去的uptoken 为空