File

 

Интерфейс File представляет информацию о файлах и предоставляет JavaScript в веб странице доступ к их контенту.

Объекты File  как правило извлекаются из объекта FileList, который возвращён как результат пользовательского выбора файлов с помощью <input> элемента, из drag and drop операций DataTransfer объекта, или из mozGetAsFile() API на HTMLCanvasElement. В Gecko, привилегированный код может создать файл представляющий любой локалный файл без пользовательского взаимодействия (см Gecko notes для получения большей информации.)

Объект File - особый вид Blob, и может быть использован в любом контексте так же, как и Blob. В частности, FileReader, URL.createObjectURL(), createImageBitmap(), и XMLHttpRequest.send() допускают и Blob, и File.

Смотри Использование файлов в веб приложениях для получения более подробной информации и примеров.

Свойства

Интерфейс File также наследует свойства от Blob интерфейса:

File.lastModified Только для чтения
Возвращает время последнего изменения файла в миллисекунде с эпохи UNIX (1 января 1970 года в 00:00:00  в часовом поясе UTC).
File.lastModifiedDate Только для чтения
Возвращает дату последнего изменения файла, на который ссылается объект File.
File.name Только для чтения
Возвращает имя файла, на который ссылается объект File.
File.size Только для чтения
Возвращает размер файла.
File.webkitRelativePath Только для чтения
Возвращает URL адрес, где расположен File.
File.type Только для чтения
Возвращает MIME тип файла.

Методы

Интерфейс не определяет никаких методов, но наследует методы из интерфейса Blob:

Blob.slice()
Returns a new Blob object containing the data in the specified range of bytes of the blob on which it's called.
Blob.stream()
Returns a ReadableStream that can be used to read the contents of the blob.
Blob.text()
Returns a promise that resolves with a USVString containing the entire contents of the blob interpreted as UTF-8 text.
Blob.arrayBuffer()
Returns a promise that resolves with an ArrayBuffer containing the entire contents of the blob as binary data.

Спецификация

Specification Status Comment
File API Рабочий черновик Исходное определение

Браузерная совместимость

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
FileChrome Полная поддержка 13Edge Полная поддержка ДаFirefox Полная поддержка 7
Полная поддержка 7
Нет поддержки 3 — 7
Замечания
Замечания Non-standard implementation.
IE Полная поддержка 10Opera Полная поддержка 11.5Safari Полная поддержка 6WebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Полная поддержка 7
Полная поддержка 7
Нет поддержки 4 — 7
Замечания
Замечания Non-standard implementation.
Opera Android Полная поддержка 11.5Safari iOS Полная поддержка 6Samsung Internet Android Полная поддержка Да
File() constructorChrome Полная поддержка 13Edge Нет поддержки НетFirefox Полная поддержка 7IE Нет поддержки НетOpera Полная поддержка 11.5Safari Полная поддержка 10.1WebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Полная поддержка 7Opera Android Нет поддержки НетSafari iOS Полная поддержка 6Samsung Internet Android Полная поддержка Да
lastModifiedChrome Полная поддержка 13Edge Полная поддержка 18Firefox Полная поддержка 15IE Нет поддержки НетOpera Полная поддержка 16Safari Нет поддержки НетWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка Да
lastModifiedDate
УстаревшаяНестандартная
Chrome Полная поддержка 13Edge Полная поддержка 12Firefox Нет поддержки 15 — 61IE Полная поддержка 10Opera Полная поддержка 16Safari Нет поддержки НетWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка Да
nameChrome Полная поддержка 13Edge Полная поддержка 12Firefox Полная поддержка 3.6IE Полная поддержка 10Opera Полная поддержка 16Safari Полная поддержка ДаWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка Да
typeChrome Полная поддержка 13Edge Полная поддержка ДаFirefox Полная поддержка 3.6IE Полная поддержка 10Opera Полная поддержка 16Safari Полная поддержка ДаWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка Да
webkitRelativePathChrome Полная поддержка 13
С префиксом
Полная поддержка 13
С префиксом
С префиксом Требует вендорный префикс: webkit
Edge Полная поддержка 13Firefox Полная поддержка 49IE Нет поддержки НетOpera Нет поддержки НетSafari Нет поддержки НетWebView Android Полная поддержка ДаChrome Android Полная поддержка 18
С префиксом
Полная поддержка 18
С префиксом
С префиксом Требует вендорный префикс: webkit
Firefox Android Полная поддержка 49Opera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android ?

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах
Смотрите замечания реализации.
Смотрите замечания реализации.
Требует вендорный префикс или другое имя для использования.
Требует вендорный префикс или другое имя для использования.

 

Реализационные заметки

  • В Gecko, вы можете использовать этот API изнутри chrome code. Смотрите Использование DOM File API в chrome code, чтобы узнать больше. Чтобы использовать API в chrome code, JSM и Bootstrap, вы должны импортировать его используя Cu.importGlobalProperties(['File']);
  • Начиная с Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), привелигированный код (такой как расширение) может передавать объект nsIFile в DOM File конструктор для указания файла в справку.
  • Начиная с Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5), вы можете использовать new File чтобы создать объект File из XPCOM компонентного кода вместо создания экземпляра nsIDOMFile объекта напрямую. Конструктор принимает Blob, второй аргумент - имя файла. Имя файла может быть любой строкой.
    File File(
      Array parts,
      String filename, 
      BlobPropertyBag properties
    );
  • Следующие нестандартные методы и свойства были убраны в Gecko 7 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4): File.fileName, File.fileSize, File.getAsBinary(), File.getAsDataURL(), File.getAsText(string encoding) (баг 661876). Стандартные свойства File.name, Blob.size, и методы FileReader должны быть использованы вместо них.

Смотрите также