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();
 | 
						|
      }
 | 
						|
    };
 | 
						|
  }
 | 
						|
}); |