首頁 >後端開發 >php教程 >javascript - 上传失败 token not specified

javascript - 上传失败 token not specified

WBOY
WBOY原創
2016-07-06 13:54:113568瀏覽

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

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

<code>
var qiniu_up = qiniu.uploader({
            runtimes : 'html5,flash,html4',
            browse_button : 'qiniu_browse',
            get_new_uptoken: true,
            unique_names: false,
            save_key : true,
            domain : '<?php echo QINIU_BUCKET_SITE;?>',
            container : 'container',
            max_file_size: '4mb',
            flash_swf_url : '<?php echo RES_ROOT.'/assets/js/plupload/Moxie.swf';?>',
            silverlight_xap_url : '<?php echo RES_ROOT.'/assets/js/plupload/Moxie.xap';?>',
            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 : '<?php echo WEBSITE_URL.'/qiniu_upload/media_uptoken';?>',
                     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;
            }
        });
</code>

回复内容:

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

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

<code>
var qiniu_up = qiniu.uploader({
            runtimes : 'html5,flash,html4',
            browse_button : 'qiniu_browse',
            get_new_uptoken: true,
            unique_names: false,
            save_key : true,
            domain : '<?php echo QINIU_BUCKET_SITE;?>',
            container : 'container',
            max_file_size: '4mb',
            flash_swf_url : '<?php echo RES_ROOT.'/assets/js/plupload/Moxie.swf';?>',
            silverlight_xap_url : '<?php echo RES_ROOT.'/assets/js/plupload/Moxie.xap';?>',
            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 : '<?php echo WEBSITE_URL.'/qiniu_upload/media_uptoken';?>',
                     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;
            }
        });
</code>

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

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn