forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*! https://www.henryalgus.com/reading-binary-files-using-jquery-ajax/ */
 | |
| /**
 | |
|  *
 | |
|  * jquery.binarytransport.js
 | |
|  *
 | |
|  * @description. jQuery ajax transport for making binary data type requests.
 | |
|  * @version 1.0
 | |
|  * @author Henry Algus <henryalgus@gmail.com>
 | |
|  *
 | |
|  */
 | |
| 
 | |
| // use this transport for "binary" data type
 | |
| $.ajaxTransport("+binary", function(options, originalOptions, jqXHR){
 | |
|   // check for conditions and support for blob / arraybuffer response type
 | |
|   if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))) {
 | |
|     return {
 | |
|       // create new XMLHttpRequest
 | |
|       send: function(headers, callback){
 | |
|         // setup all variables
 | |
|         var xhr = new XMLHttpRequest(),
 | |
|           url = options.url,
 | |
|           type = options.type,
 | |
|           async = options.async || true,
 | |
|           // blob or arraybuffer. Default is blob
 | |
|           dataType = options.responseType || "blob",
 | |
|           data = options.data || null,
 | |
|           username = options.username || null,
 | |
|           password = options.password || null;
 | |
| 
 | |
|         xhr.addEventListener('load', function(){
 | |
|           var data = {};
 | |
|           data[options.dataType] = xhr.response;
 | |
|           // make callback and send data
 | |
|           callback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());
 | |
|         });
 | |
| 
 | |
|         xhr.open(type, url, async, username, password);
 | |
| 
 | |
|         // setup custom headers
 | |
|         for (var i in headers) {
 | |
|           xhr.setRequestHeader(i, headers[i]);
 | |
|         }
 | |
| 
 | |
|         xhr.responseType = dataType;
 | |
|         xhr.send(data);
 | |
|       },
 | |
|       abort: function(){
 | |
|         jqXHR.abort();
 | |
|       }
 | |
|     };
 | |
|   }
 | |
| }); |