forked from danialfarid/ng-file-upload
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathangular-file-upload-shim.min.js
12 lines (12 loc) · 3.75 KB
/
angular-file-upload-shim.min.js
1
2
3
4
5
6
7
8
9
10
11
12
/**!
* AngularJS file upload shim for HTML5 FormData
* @author Danial <[email protected]>
* @version 1.1.4
*/
(function(){window.XMLHttpRequest&&(XMLHttpRequest=window.FormData?function(b){return function(){var a=new b;a.send=function(b){return function(){if(arguments[0]instanceof FormData&&arguments[0].__uploadProgress_){var c=arguments[0];c.__uploadProgress_&&a.upload.addEventListener("progress",function(a){c.__uploadProgress_(a)},!1);c.__setAbortFunction_&&c.__setAbortFunction_(function(){a.abort()})}b.apply(a,arguments)}}(a.send);return a}}(XMLHttpRequest):function(b){return function(){var a=new b,g=
a.send;a.__requestHeaders=[];a.open=function(c){a.upload={addEventListener:function(c,d,b){"progress"==c&&(a.__progress=d)}};return function(f,d,b){c.apply(a,[f,d,b]);a.__url=d}}(a.open);a.getResponseHeader=function(c){return function(b){return a.__fileApiXHR?a.__fileApiXHR.getResponseHeader(b):c.apply(a,[b])}}(a.getResponseHeader);a.getAllResponseHeaders=function(c){return function(){return a.__fileApiXHR?a.__fileApiXHR.getAllResponseHeaders():c.apply(a)}}(a.getAllResponseHeaders);a.abort=function(c){return function(){return a.__fileApiXHR?
a.__fileApiXHR.abort():null==c?null:c.apply(a)}}(a.abort);a.send=function(){if(arguments[0].__isShim&&arguments[0].__uploadProgress_){var c=arguments[0];c.__uploadProgress_&&a.upload.addEventListener("progress",function(a){c.__uploadProgress_(a)},!1);c.__setAbortFunction_&&c.__setAbortFunction_(function(){a.__fileApiXHR.abort()});for(var b={url:a.__url,complete:function(c,b){Object.defineProperty(a,"status",{get:function(){return b.status}});Object.defineProperty(a,"statusText",{get:function(){return b.statusText}});
Object.defineProperty(a,"readyState",{get:function(){return 4}});Object.defineProperty(a,"response",{get:function(){return b.response}});Object.defineProperty(a,"responseText",{get:function(){return b.responseText}});a.__fileApiXHR=b;a.onreadystatechange()},progress:function(b){a.__progress(b)},headers:a.__requestHeaders,data:{},files:{}},d=0;d<c.data.length;d++){var e=c.data[d];null!=e.val&&null!=e.val.name&&null!=e.val.size&&null!=e.val.type?b.files[e.key]=e.val:b.data[e.key]=e.val}a.__fileApiXHR=
FileAPI.upload(b)}else g.apply(a,arguments)};return a}}(XMLHttpRequest));window.FormData||(HTMLInputElement.prototype.addEventListener=HTMLInputElement.prototype.attachEvent=function(b){return function(a,g,c,f){if("change"!==a.toLowerCase()&&"onchange"!==a.toLowerCase()||"file"!=this.getAttribute("type"))b.apply(this,[a,g,c,f]);else{if(!this.__isWrapped&&(null!=this.getAttribute("ng-file-select")||null!=this.getAttribute("data-ng-file-select"))){var d=document.createElement("div");d.innerHTML='<div class="js-fileapi-wrapper" style="position:relative; overflow:hidden"></div>';
var d=d.firstChild,e=this.parentNode;e.insertBefore(d,this);e.removeChild(this);d.appendChild(this);this.__isWrapped=!0}b.apply(this,[a,function(a){var b=FileAPI.getFiles(a);a.target||(a.target={});a.target.files=b;a.target.files.item=function(b){return a.target.files[b]||null};g(a)},c,f])}}}(HTMLInputElement.prototype.addEventListener||HTMLInputElement.prototype.attachEvent),window.FormData=FormData=function(){return{append:function(b,a,g){this.data.push({key:b,val:a,name:g})},data:[],__isShim:!0}},
function(){if(!window.FileAPI||!FileAPI.upload){var b="",a=document.createElement("script"),g=document.getElementsByTagName("script"),c,f,d;if(window.FileAPI&&window.FileAPI.jsPath)b=window.FileAPI.jsPath;else for(c=0;c<g.length;c++)if(d=g[c].src,f=d.indexOf("angular-file-upload-shim.js"),-1==f&&(f=d.indexOf("angular-file-upload-shim.min.js")),-1<f){b=d.substring(0,f);break}window.FileAPI&&null!=FileAPI.staticPath||(FileAPI={staticPath:b});a.setAttribute("src",b+"FileAPI.min.js");document.getElementsByTagName("head")[0].appendChild(a)}}())})();