Advertisement
Gordon___From

Untitled

Nov 14th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.          * The XMLHttpRequest transport
  3.          * @param {FileItem} item
  4.          * @private
  5.          */
  6.         _xhrTransport(item) {
  7.             var xhr = item._xhr = new XMLHttpRequest();
  8.             var sendable;
  9.  
  10.             if (!item.disableMultipart) {
  11.                 sendable = new FormData();
  12.                 forEach(item.formData, (obj) => {
  13.                     forEach(obj, (value, key) => {
  14.                         sendable.append(key, value);
  15.                     });
  16.                 });
  17.  
  18.                 sendable.append(item.alias, item._file, item.file.name);
  19.             }
  20.             else {
  21.                 sendable = item._file;
  22.             }
  23.  
  24.             if(typeof(item._file.size) != 'number') {
  25.                 throw new TypeError('The file specified is no longer valid');
  26.             }
  27.  
  28.             xhr.upload.onprogress = (event) => {
  29.                 var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
  30.                 this._onProgressItem(item, progress);
  31.             };
  32.  
  33.             xhr.onload = () => {
  34.                 var headers = this._parseHeaders(xhr.getAllResponseHeaders());
  35.                 var response = this._transformResponse(xhr.response, headers);
  36.                 var gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';
  37.                 var method = '_on' + gist + 'Item';
  38.                 this[method](item, response, xhr.status, headers);
  39.                 this._onCompleteItem(item, response, xhr.status, headers);
  40.             };
  41.  
  42.             xhr.onerror = () => {
  43.                 var headers = this._parseHeaders(xhr.getAllResponseHeaders());
  44.                 var response = this._transformResponse(xhr.response, headers);
  45.                 this._onErrorItem(item, response, xhr.status, headers);
  46.                 this._onCompleteItem(item, response, xhr.status, headers);
  47.             };
  48.  
  49.             xhr.onabort = () => {
  50.                 var headers = this._parseHeaders(xhr.getAllResponseHeaders());
  51.                 var response = this._transformResponse(xhr.response, headers);
  52.                 this._onCancelItem(item, response, xhr.status, headers);
  53.                 this._onCompleteItem(item, response, xhr.status, headers);
  54.             };
  55.  
  56.             xhr.open(item.method, item.url, true);
  57.  
  58.             xhr.withCredentials = item.withCredentials;
  59.  
  60.             forEach(item.headers, (value, name) => {
  61.                 xhr.setRequestHeader(name, value);
  62.             });
  63.  
  64.             xhr.send(sendable);
  65.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement