From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- files/uk/web/api/blob/index.html | 230 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 files/uk/web/api/blob/index.html (limited to 'files/uk/web/api/blob') diff --git a/files/uk/web/api/blob/index.html b/files/uk/web/api/blob/index.html new file mode 100644 index 0000000000..3cdfbcf46a --- /dev/null +++ b/files/uk/web/api/blob/index.html @@ -0,0 +1,230 @@ +--- +title: Blob +slug: Web/API/Blob +translation_of: Web/API/Blob +--- +
{{APIRef("File API")}}
+ +

Об'єкт Blob являє собою файло-подібний об'єкт незмінних, початкових даних. Blob представляє дані, що не обов'язкові у нативному форматі JavaScript. Вигляд {{domxref("File")}} заснований на Blob, наслідує функціонал Blob та доповнює його для підтримки файлів з файлової системи користувача.

+ +

Для формування Blob з інших не-blob об'єктів й даних використовується конструктор {{domxref("Blob.Blob", "Blob()")}}. Для створення Blob, що міститиме підмножину інших даних Blob, викликається метод {{domxref("Blob.slice()", "slice()")}}. Для отримання Blob для файла з файлової системи користувача перегляньте документацію до {{domxref("File")}}.

+ +

API, що працюють з  Blob, також перелічені у документації {{domxref("File")}}.

+ +
+

Зауваження: Метод slice() другим парметром приймає початкову довжину для індикації кількості байтів, які будуть скопійовані у новий Blob. Якщо вказувати змінні таким чином: початковій індекс + довижина, що привищує розмір джерела Blob, повератємий Blob буде містити дані від початкового індексу до кінця джерела Blob.

+
+ +
Зауваження: Майте на увазі, що метод slice() має вендорні префікси у деяких браузерах и версіях: blob.mozSlice() для Firefox 12 та попередніх й blob.webkitSlice() у Safari. Стара версія методу slice(), без вендорних префіксів, має іншу семантику та вважається застарілою. Підтримка blob.mozSlice() була припинена з Firefox 30.
+ +

Конструктор

+ +
+
{{domxref("Blob.Blob", "Blob(blobParts[, options])")}}
+
Повертає новостворенний об'єкт Blob, чий контент складається з ланцюга масивів значень вхідних парметрів.
+
+ +

Властивості

+ +
+
{{domxref("Blob.isClosed")}} {{readonlyinline}} {{experimental_inline}}
+
Булєве значення, що вказує, чи був метод {{domxref("Blob.close()")}} викликан на Blob. Закритий Blob не може бути прочитаний.
+
{{domxref("Blob.size")}} {{readonlyinline}}
+
Розмір, у байтах, даних, що міститься у об'єкті Blob.
+
{{domxref("Blob.type")}} {{readonlyinline}}
+
Строка, що вказує MIME тип даних, що містяться у Blob. Якщо тип невідомий, ця строка порожня.
+
+ +

Методи

+ +
+
{{domxref("Blob.close()")}} {{experimental_inline}}
+
Закриває об'єкт Blob, можливо, звілняючи використовувані ресурси.
+
{{domxref("Blob.slice()", "Blob.slice([start[, end[, contentType]]])")}}
+
Повертає новий об'єкт Blob, що містить дані у вказаному диапазоні байтів джерела Blob.
+
+ +

Приклади

+ +

Приклад використання конструктора Blob

+ +

{{domxref("Blob.Blob", "Blob() constructor")}} дозволяє створювати Blob з інших об'єктів. Наприклад, щоб сконструювати Blob із стрічки:

+ +
var debug = {hello: "world"};
+var blob = new Blob([JSON.stringify(debug, null, 2)], {type : 'application/json'});
+ +
+

До того, як конструктор Blob став доступний, це можна було зробити за допомогою {{domxref("BlobBuilder")}} API, яка зараз вважається застарілою:

+ +
var builder = new BlobBuilder();
+var fileParts = ['<a id="a"><b id="b">hey!</b></a>'];
+builder.append(fileParts[0]);
+var myBlob = builder.getBlob('text/xml');
+
+
+ +

Приклад створення URL типізованого масиву з використанням Blob

+ +

Наступний код:

+ +
var typedArray = GetTheTypedArraySomehow();
+var blob = new Blob([typedArray], {type: 'application/octet-binary'}); // pass a useful mime type here
+var url = URL.createObjectURL(blob);
+// url буде виглядати наступним чином: blob:d3958f5c-0777-0845-9dcf-2cb28783acaf
+// тепер ви можете використовувати url у будь-якому контексті, де можуть бути використані звичайні URLs, наприклад img.src, тощо.
+
+ +

Приклад отримання даних з Blob

+ +

Єдиний шлях для отримання даних з Blob це використовуючи {{domxref("FileReader")}}. Наступиний код зчитує дані з Blob у вигляді типізованого масиву.

+ +
var reader = new FileReader();
+reader.addEventListener("loadend", function() {
+   // reader.result містить контент Blob у вигляді типізованого масиву
+});
+reader.readAsArrayBuffer(blob);
+ +

Вікористовуючи інші методи {{domxref("FileReader")}}, можна прочитати контент Blob у вигляді строки або URL.

+ +

Специфікації

+ + + + + + + + + + + + + + +
СпецифікацияСтатусКоментар
{{SpecName('File API','#blob','Blob')}}{{Spec2('File API')}}Initial definition
+ +

Сумісність з браузерами

+ +

{{CompatibilityTable}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support5[1]4[2]1011.10[1]5.1[1]
slice()10 {{property_prefix("webkit")}}
+ 21
5 {{property_prefix("moz")}}[3]
+ 13
10125.1 {{property_prefix("webkit")}}
Blob() constructor20{{CompatGeckoDesktop("13.0")}}1012.106
close() and isClosed{{CompatUnknown}}{{CompatNo}}[4]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support{{CompatUnknown}}{{CompatGeckoMobile("13.0")}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
slice(){{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
Blob() constructor{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
close() and isClosed{{CompatUnknown}}{{CompatNo}}[4]{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

[1] A version of slice() taking the length as second argument was implemented in WebKit and Opera 11.10. However, since that syntax differed from {{jsxref("Array/slice", "Array.slice()")}} and {{jsxref("String/slice", "String.slice()")}}, WebKit removed support and added support for the new syntax as Blob.webkitSlice().

+ +

[2] A version of slice() taking the length as second argument was implemented in Firefox 4. However, since that syntax differed from {{jsxref("Array/slice", "Array.slice()")}} and {{jsxref("String/slice", "String.slice()")}}, Gecko removed support and added support for the new syntax as mozSlice().

+ +

[3] Prior to Gecko 12.0 {{geckoRelease("12.0")}}, there was a bug that affected the behavior of 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.

+ +

[4] See {{bug("1048325")}}

+ +

Gecko notes: availability in privileged code

+ +

To use from chrome code, JSM and Bootstrap scope, you have to import it like this:

+ +
Cu.importGlobalProperties(['Blob']);
+
+ +

Blob is available in Worker scopes.

+ +

See also

+ + -- cgit v1.2.3-54-g00ecf