How to replace the deprecated BlobBuilder with the new Blob constructor?

前端 未结 2 507
-上瘾入骨i
-上瘾入骨i 2020-12-18 05:57

Since Blobbuilder is deprecated and I have recently decided to use a new facial recognition API I am having a hard time switching over to just \"blob\".

func         


        
相关标签:
2条回答
  • 2020-12-18 06:26

    Switching from BlobBuilder to Blob is quite straightforward. Try the following backwards-compatible code (the stuff in the catch block is your original code):

    ...
        try {
            return new Blob([ab], {type: mimeString});
        } catch (e) {
            // The BlobBuilder API has been deprecated in favour of Blob, but older
            // browsers don't know about the Blob constructor
            // IE10 also supports BlobBuilder, but since the `Blob` constructor
            //  also works, there's no need to add `MSBlobBuilder`.
            var BlobBuilder = window.WebKitBlobBuilder || window.MozBlobBuilder;
            var bb = new BlobBuilder();
            bb.append(ab);
            return bb.getBlob(mimeString);
        }
    }
    
    0 讨论(0)
  • 2020-12-18 06:43
    Blob = (function() {
      var nativeBlob = Blob;
    
      // Add unprefixed slice() method.
      if (Blob.prototype.webkitSlice) {
        Blob.prototype.slice = Blob.prototype.webkitSlice;  
      }
      else if (Blob.prototype.mozSlice) {
        Blob.prototype.slice = Blob.prototype.mozSlice;  
      }
    
      // Temporarily replace Blob() constructor with one that checks support.
      return function(parts, properties) {
        try {
          // Restore native Blob() constructor, so this check is only evaluated once.
          Blob = nativeBlob;
          return new Blob(parts || [], properties || {});
        }
        catch (e) {
          // If construction fails provide one that uses BlobBuilder.
          Blob = function (parts, properties) {
            var bb = new (WebKitBlobBuilder || MozBlobBuilder), i;
            for (i in parts) {
              bb.append(parts[i]);
            }
            return bb.getBlob(properties && properties.type ? properties.type : undefined);
          };
        }        
      };
    }());
    

    Include this before you are going to use Blobs and you'll be able to use Blob constructors in browsers that only support the deprecated BlobBuilder.

    0 讨论(0)
提交回复
热议问题