uploadBeforeSend |
|
當某個文件的分塊在發送前觸發,主要用來詢問是否要添加附帶參數,大文件在開起分片上傳的前提下此事件可能會觸發屢次。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");