File and Directory Entries API
Ðе ÑÑандаÑÑно: ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ ÑÑандаÑÑизиÑована. ÐÑ Ð½Ðµ ÑекомендÑем иÑполÑзоваÑÑ Ð½ÐµÑÑандаÑÑнÑе ÑÑнкÑии в дейÑÑвÑÑÑÐ¸Ñ Ð¿ÑоекÑÐ°Ñ , Ñак как Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка бÑаÑзеÑами огÑаниÑена, а поведение Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð¸Ð»Ð¸ бÑÑÑ Ñдалено. Тем не менее, в некоÑоÑÑÑ ÑлÑÑаÑÑ , когда Ð½ÐµÑ ÑÑандаÑÑного ÑеÑениÑ, они могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑей алÑÑеÑнаÑивой.
API доÑÑÑпа к Ñайлам и диÑекÑоÑиÑм имиÑиÑÑÐµÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ ÑайловÑÑ ÑиÑÑемÑ, в коÑоÑой веб-пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¿ÐµÑемеÑаÑÑÑÑ Ð¸ полÑÑаÑÑ Ð´Ð¾ÑÑÑп к Ñайлам. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑазÑабаÑÑваÑÑ Ð¿ÑиложениÑ, коÑоÑÑе ÑиÑаÑÑ, запиÑÑваÑÑ Ð¸ ÑоздаÑÑ ÑÐ°Ð¹Ð»Ñ Ð¸/или каÑалоги в виÑÑÑалÑной изолиÑованной Ñайловой ÑиÑÑеме.
ÐÑимеÑание: ÐоÑколÑÐºÑ ÑÑо неÑÑандаÑÑнÑй API, ÑпеÑиÑикаÑÐ¸Ñ ÐºÐ¾ÑоÑого в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² ÑÑандаÑÑ, важно помниÑÑ, ÑÑо не вÑе бÑаÑзеÑÑ ÑеализÑÑÑ ÐµÐ³Ð¾, а Ñе, коÑоÑÑе поддеÑживаÑÑ, могÑÑ ÑеализовÑваÑÑ ÑолÑко неболÑÑие его ÑаÑÑи. ÐополниÑелÑнÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² Ñазделе Browser compatibility
СÑÑеÑÑвÑÑÑ Ð´Ð²Ð° оÑÐµÐ½Ñ Ð¿Ð¾Ñ
ожиÑ
API в завиÑимоÑÑи Ð¾Ñ Ñого, Ñ
оÑиÑе ли Ð²Ñ Ð°ÑинÑ
Ñонного или ÑинÑ
Ñонного поведениÑ. СинÑ
ÑоннÑй API пÑедназнаÑен Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÑÑÑи Worker и бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ñе знаÑениÑ. ÐÑинÑ
ÑоннÑй API не бÑÐ´ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑоваÑÑ Ð²Ñполнение кода, а API не бÑÐ´ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð·Ð½Ð°ÑениÑ; вмеÑÑо ÑÑого вам нÑжно бÑÐ´ÐµÑ Ð¿ÑедоÑÑавиÑÑ ÐºÐ¾Ð»Ð±Ñк-ÑÑнкÑÐ¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки одного или неÑколÑкиÑ
оÑвеÑов.
ÐÑедÑпÑеждение:
Firefox ÑеализаÑÐ¸Ñ File System API оÑÐµÐ½Ñ Ð¾Ð³ÑаниÑена: не поддеÑживаеÑÑÑ Ñоздание Ñайлов. ÐоÑÑÑп к Ñайлам оÑÑÑеÑÑвлÑеÑÑÑ ÑолÑко ÑеÑез <input> ÑÐ»ÐµÐ¼ÐµÐ½Ñ (Ñм. Ñак же HTMLInputElement) или пÑÑÑм пеÑеÑаÑÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ñайла/папки (drag and drop). Firefox Ñакже не ÑеализÑÐµÑ ÑинÑ
ÑоннÑй API. ÐнимаÑелÑно пÑовеÑÑÑе ÑовмеÑÑимоÑÑÑ Ð±ÑаÑзеÑа Ð´Ð»Ñ Ð»Ñбой ÑаÑÑи API, коÑоÑÑÑ Ð²Ñ Ð¸ÑполÑзÑеÑе. ( Ñм. ÐоддеÑжка File System API в Firefox)
ÐолÑÑение доÑÑÑпа к Ñайловой ÑиÑÑеме
ÐÑÑÑ Ð´Ð²Ð° ÑпоÑоба полÑÑиÑÑ Ð´Ð¾ÑÑÑп к Ñайловой ÑиÑÑеме, опÑеделÑннÑм в ÑекÑÑем пÑоекÑе ÑпеÑиÑикаÑии:
- ÐÑи обÑабоÑке ÑобÑÑиÑ
dropÐ²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑзваÑÑDataTransferItem.webkitGetAsEntry()ÑÑо Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑFileSystemEntryÐ´Ð»Ñ "бÑоÑенного" ÑлеменÑа. ÐÑли ÑезÑлÑÑÐ°Ñ Ð½Ðµnull, Ñо ÑÑо бÑоÑеннÑй Ñайл или каÑалог, и Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð²ÑÐ·Ð¾Ð²Ñ Ñайловой ÑиÑÑÐµÐ¼Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð½Ð¸Ð¼. - СвойÑÑво
HTMLInputElement.webkitEntriesпозволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¾Ð±ÑекÑFileSystemFileEntryÐ´Ð»Ñ Ð²ÑбÑанного Ñайла, но ÑолÑко еÑли они пеÑеÑаÑкиваÑÑÑÑ Ð² ÑÑедÑÑво вÑбоÑа Ñайлов ( баг 1326031 ). ÐÑлиHTMLInputElement.webkitdirectoryÑвлÑеÑÑÑtrue, Ñо<input>ÑабоÑÐ°ÐµÑ Ð´Ð»Ñ Ð²ÑбоÑа диÑекÑоÑий, и Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе полÑÑиÑÑ Ð¾Ð±ÑекÑFileSystemDirectoryEntryÐ´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ вÑбÑанной диÑекÑоÑии.
ÐÑÐ¸Ð½Ñ ÑоннÑй API
ÐÑÐ¸Ð½Ñ ÑоннÑй API ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва опеÑаÑий, ÑÑÐ¾Ð±Ñ Ð´Ð¾ÑÑÑп к Ñайловой ÑиÑÑеме не блокиÑовал веÑÑ Ð±ÑаÑзеÑ, еÑли он иÑполÑзÑеÑÑÑ Ð² оÑновном поÑоке. Ðн вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ ÑледÑÑÑие инÑеÑÑейÑÑ:
FileSystem-
ÐÑедÑÑавлÑÐµÑ ÑайловÑÑ ÑиÑÑемÑ.
FileSystemEntry-
ÐазовÑй инÑеÑÑейÑ, пÑедÑÑавлÑÑÑий Ð¾Ð´Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð² Ñайловой ÑиÑÑеме. ÐÑо ÑеализÑеÑÑÑ Ð´ÑÑгими инÑеÑÑейÑами, коÑоÑÑе пÑедÑÑавлÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð¸Ð»Ð¸ каÑалоги.
FileSystemFileEntry-
ÐÑедÑÑавлÑÐµÑ Ð¾ÑделÑнÑй Ñайл в Ñайловой ÑиÑÑеме.
FileSystemDirectoryEntry-
ÐÑедÑÑавлÑÐµÑ Ð¾ÑделÑнÑй каÑалог в Ñайловой ÑиÑÑеме.
FileSystemDirectoryReader-
СозданнÑй пÑÑÑм вÑзова
FileSystemDirectoryEntry.createReader(), ÑÑÐ¾Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð¿ÑедоÑÑавлÑÐµÑ ÑÑнкÑии, коÑоÑÑе позволÑÑÑ Ð²Ð°Ð¼ ÑиÑаÑÑ ÑодеÑжимое каÑалога. FileSystemFlags-
ÐпÑеделÑÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð·Ð½Ð°Ñений, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð¿Ñи Ñказании Ñлагов опÑий пÑи вÑзове опÑеделÑннÑÑ Ð¼ÐµÑодов в File System API.
FileError-
ÐÑедÑÑавлÑÐµÑ Ð¾ÑибкÑ, коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ñи вÑÐ·Ð¾Ð²Ð°Ñ Ð°ÑÐ¸Ð½Ñ Ñонной Ñайловой ÑиÑÑемÑ.
Также еÑÑÑ Ð´Ð²Ðµ глобалÑнÑе ÑÑнкÑии (коÑоÑÑе в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑпеÑиÑикаÑии и ÑеализÑÑÑÑÑ ÑолÑко в Google Chrome). Ðни доÑÑÑÐ¿Ð½Ñ Ð²Ð½ÑÑÑи обÑекÑа Window и ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð² LocalFileSystem: requestFileSystem() и resolveLocalFileSystemURL().
Ð¡Ð¸Ð½Ñ ÑоннÑй API
СинÑ
ÑоннÑй API ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑолÑко в Worker-аÑ
; ÑÑи вÑÐ·Ð¾Ð²Ñ Ð±Ð»Ð¾ÐºÐ¸ÑÑÑÑÑÑ Ð´Ð¾ ÑеÑ
поÑ, пока не законÑÐ°Ñ ÑÐ²Ð¾Ñ Ð²Ñполнение, и пÑоÑÑо возвÑаÑаÑÑ ÑезÑлÑÑаÑÑ Ð²Ð¼ÐµÑÑо иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð»Ð±Ñков. ÐÑполÑзование иÑ
в оÑновном поÑоке заблокиÑÑÐµÑ Ð±ÑаÑзеÑ, ÑÑо непоÑлÑÑно. РпÑоÑивном ÑлÑÑае инÑеÑÑейÑÑ Ð½Ð¸Ð¶Ðµ оÑÑажаÑÑ Ð¸Ð½ÑеÑÑейÑÑ Ð°ÑинÑ
Ñонного API.
FileSystemSync-
ÐÑедÑÑавлÑÐµÑ ÑайловÑÑ ÑиÑÑемÑ.
FileSystemEntrySync-
ÐазовÑй инÑеÑÑейÑ, пÑедÑÑавлÑÑÑий Ð¾Ð´Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð² Ñайловой ÑиÑÑеме. ÐÑо ÑеализÑеÑÑÑ Ð´ÑÑгими инÑеÑÑейÑами, коÑоÑÑе пÑедÑÑавлÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð¸Ð»Ð¸ каÑалоги.
EntrySync FileSystemFileEntrySync-
ÐÑедÑÑавлÑÐµÑ Ð¾ÑделÑнÑй Ñайл в Ñайловой ÑиÑÑеме.
FileSystemDirectoryEntrySync-
ÐÑедÑÑавлÑÐµÑ Ð¾ÑделÑнÑй каÑалог в Ñайловой ÑиÑÑеме.
FileSystemDirectoryReaderSync-
СозданнÑй пÑÑÑм вÑзова
FileSystemDirectoryEntrySync.createReader(), ÑÑÐ¾Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð¿ÑедоÑÑавлÑÐµÑ ÑÑнкÑии, коÑоÑÑе позволÑÑÑ Ð²Ð°Ð¼ ÑиÑаÑÑ ÑодеÑжимое каÑалога. FileException-
ÐÑедÑÑавлÑÐµÑ Ð¾ÑибкÑ, коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ñи вÑÐ·Ð¾Ð²Ð°Ñ ÑÐ¸Ð½Ñ Ñонной Ñайловой ÑиÑÑемÑ.
Также еÑÑÑ Ð´Ð²Ðµ глобалÑнÑе ÑÑнкÑии (коÑоÑÑе в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ ÑвлÑÑÑÑÑ ÑаÑÑÑÑ ÑпеÑиÑикаÑии и ÑеализÑÑÑÑÑ ÑолÑко в Google Chrome). Ðни доÑÑÑÐ¿Ð½Ñ Ð² обÑекÑе Worker и ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð²LocalFileSystemSync: requestFileSystemSync() и resolveLocalFileSystemSyncURL().
ÐÑÑгие инÑеÑÑейÑÑ
LocalFileSystem-
ÐÑедоÑÑавлÑÐµÑ Ð²Ð°Ð¼ доÑÑÑп к изолиÑованной Ñайловой ÑиÑÑеме.
LocalFileSystemSyncLockedFile-
ÐÑедоÑÑавлÑÐµÑ Ð¸Ð½ÑÑÑÑменÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð´Ð°Ð½Ð½Ñм Ñайлом Ñо вÑеми Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñми блокиÑовками.
СпеÑиÑикаÑии
| Specification |
|---|
| File and Directory Entries API> # api-domfilesystem> |