The Blob.slice()
method is used to create a new Blob
object containing the data in the specified range of bytes of the source Blob
.
slice()
method has vendor prefixes on some browsers and versions: blob.mozSlice()
for Firefox 12 and earlier and blob.webkitSlice()
in Safari. An old version of the slice()
method, without vendor prefixes, had different semantics, and is obsolete.Syntax
var blob = instanceOfBlob.slice([start [, end [, contentType]]]);
Parameters
start
Optional- An index into the
Blob
indicating the first byte to include in the newBlob
. If you specify a negative value, it's treated as an offset from the end of the string toward the beginning. For example, -10 would be the 10th from last byte in theBlob
. The default value is 0. If you specify a value forstart
that is larger than the size of the sourceBlob
, the returnedBlob
has size 0 and contains no data. end
Optional- An index into the
Blob
indicating the first byte that will *not* be included in the newBlob
(i.e. the byte exactly at this index is not included). If you specify a negative value, it's treated as an offset from the end of the string toward the beginning. For example, -10 would be the 10th from last byte in theBlob
. The default value issize
. contentType
Optional- The content type to assign to the new
Blob
; this will be the value of itstype
property. The default value is an empty string.
Return value
A new Blob
object containing the specified data from the source Blob
.
Specifications
Specification | Status | Comment |
---|---|---|
File API The definition of 'Blob.slice()' in that specification. |
Working Draft | Initial definition |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 10 webkit [1] 21 |
(Yes) | 5 moz [1] 13 [2] |
10 | 12 [1] | 5.1 webkit [3] |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | ? | (Yes) | 13.0 (13.0) | ? | ? | ? |
[1] The slice()
method had initially taken length
as the second argument to indicate the number of bytes to include in the new Blob
. If you specified values such that start + length
exceeded the size of the source Blob
, the returned Blob
contained data from the start index to the end of the source Blob
. That version of the slice()
was implemented in Firefox 4, WebKit, and Opera 11.10. However, since that syntax is differed from Array.slice()
and String.slice()
, Gecko and WebKit removed support and added support for the new syntax as Blob.slice()
/Blob.webkitSlice
.
[2] Prior to Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9), there was a bug that affected the behavior of Blob.slice()
; it did not work for start
and end positions outside the range of signed 64-bit values; it has now been fixed to support unsigned 64-bit values.
[3] This was implemented in 534.29.