WebUploader 事件說明
uploadBeforeSend |
|
當某個文件的分塊在發送前觸發,主要用來詢問是否要添加附帶參數,大文件在開起分片上傳的前提下此事件可能會觸發多次。 |
angularjs中添加一個攔截器,比如說一下例子:
//增加一個提交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;這一句代碼
/** * @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之間傳值。
在config.js中申明一個全局變量:
function GlobalConfig(){ } GlobalConfig.token=""; (function(){ })();
在app.js中傳值:
GlobalConfig.token = locals.getObject("accessToken");