關於WebUploader上傳文件插件的headers.token攔截問題

WebUploader 事件說明

uploadBeforeSend
  • object {Object}
  • data {Object}

    默認的上傳參數,能夠擴展此對象來控制上傳參數。html

  • headers {Object}

    能夠擴展此對象來控制上傳頭部。angularjs

當某個文件的分塊在發送前觸發,主要用來詢問是否要添加附帶參數,大文件在開起分片上傳的前提下此事件可能會觸發屢次。web

WebUploader   API文檔session

angularjs中添加一個攔截器,好比說一下例子:app

//增長一個提交token
sxApp.factory('sessionInjector', function ($rootScope,locals) {
    // Service logic$rootScope.sysuser.token
    var sessionInjector = {
        request: function(config) {
            config.headers.token =  locals.getObject("accessToken");
            if(config.method=="POST"){
                ... ...
            }
            return config;
        }
    };
    return sessionInjector;
});

這裏的 headers.token 對WebUploader插件不起做用,這時就須要在WebUploader中對header進行配置,找到webuploader.js中的uploadBeforeSend 方法,在上傳操做方法_doSend 中定義的header中,添加headers.token = GlobalConfig.token;這一句代碼this

             /**
             * @event uploadBeforeSend
             * @param {Object} object
             * @param {Object} data 默認的上傳參數,能夠擴展此對象來控制上傳參數。
             * @param {Object} headers 能夠擴展此對象來控制上傳頭部。
             * @description 當某個文件的分塊在發送前觸發,主要用來詢問是否要添加附帶參數,大文件在開起分片上傳的前提下此事件可能會觸發屢次。
             * @for  Uploader
             */

            // 作上傳操做。
            _doSend: function( block ) {
                var me = this,
                    owner = me.owner,
                    opts = me.options,
                    file = block.file,
                    tr = new Transport( opts ),
                    data = $.extend({}, opts.formData ),
                    headers = $.extend({}, opts.headers ),
                    requestAccept, ret;

                headers.token = GlobalConfig.token;
                block.transport = tr;

                tr.on( 'destroy', function() {
                    delete block.transport;
                    me._popBlock( block );
                    Base.nextTick( me.__tick );
                });

注意:因爲angularjs和jQuery之間傳值比較麻煩,在這裏就申明瞭一個全局變量GlobalConfig.token在angularjs和jQuery之間傳值。spa

在config.js中申明一個全局變量:插件

function GlobalConfig(){

}
GlobalConfig.token="";
(function(){

})();

在app.js中傳值:code

GlobalConfig.token = locals.getObject("accessToken");
相關文章
相關標籤/搜索