A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.
To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).
Zip: Difference between revisions
Jump to navigation
Jump to search
(→URLs) |
(→URLs) |
||
Line 9: | Line 9: | ||
! relative URLs pointing outside zip | ! relative URLs pointing outside zip | ||
! complexity | ! complexity | ||
! notes | |||
|- | |- | ||
! sub-scheme | ! sub-scheme | ||
Line 23: | Line 24: | ||
| rowspan="2" | √ (../otherimage.jpg) | | rowspan="2" | √ (../otherimage.jpg) | ||
| rowspan="2" | 1) URL parser needs changing. | | rowspan="2" | 1) URL parser needs changing. | ||
| generally does not work today | |||
|- | |- | ||
| http://example.org/test.zip!image.jpg (".zip!" as separator, but request path includes trailing ".zip") | | http://example.org/test.zip!image.jpg (".zip!" as separator, but request path includes trailing ".zip") | ||
| /test.zip!inner.zip | | /test.zip!inner.zip!image.jpg | ||
| possibility for compatibility-shims | |||
|- | |- | ||
! fragment | ! fragment | ||
Line 33: | Line 36: | ||
| - (zip base URL is zip:/.../) | | - (zip base URL is zip:/.../) | ||
| 1) Inner and outer URL for resources. 2) Requires new scheme. 3) Fetch needs to be passed fragment. | | 1) Inner and outer URL for resources. 2) Requires new scheme. 3) Fetch needs to be passed fragment. | ||
| | |||
|} | |} | ||
Revision as of 14:08, 13 September 2013
URLs
name | model | example | nested zips | relative URLs pointing outside zip | complexity | notes |
---|---|---|---|---|---|---|
sub-scheme | A URL is potentially a stack of URLs, the innermost URL represents the request URL and origin | zip:http://example.org/test!image.jpg (last "!" as separator) | zip:zip:/test!inner.zip!image.jpg | - (zip base URL is zip:/.../) | 1) URLs become a stack. 2) Zip URL needs its own URL object. 3) URL parser needs changing. | |
zip-path | A URL gains a zip-path which is excluded from the request URL, origin computed per usual | http://example.org/test%!image.jpg ("%!" as separator) | /test%!inner.zip%!image.jpg | √ (../otherimage.jpg) | 1) URL parser needs changing. | generally does not work today |
http://example.org/test.zip!image.jpg (".zip!" as separator, but request path includes trailing ".zip") | /test.zip!inner.zip!image.jpg | possibility for compatibility-shims | ||||
fragment | Fetch is passed fragment as well in case response is application/zip and data needs extracting. Resources from a zip have a zip URL as base. | http://example.org/test#image.jpg | http://example.org/test#inner.zip!image.jpg (??) | - (zip base URL is zip:/.../) | 1) Inner and outer URL for resources. 2) Requires new scheme. 3) Fetch needs to be passed fragment. |
While zip-path could support relative addressing outside of a zip, it's not clear whether this is desirable.
Format
For http://fetch.spec.whatwg.org/#zip-archives we need to document the zip format. Either through reference to the PKWARE text, or via a new standard (XKCD-style).
Gecko
baku https://mxr.mozilla.org/mozilla-central/source/dom/file/ArchiveZipEvent.cpp baku https://mxr.mozilla.org/mozilla-central/source/dom/file/ArchiveZipFile.cpp baku so the first file (line 120~) baku reads the file and creates ArchiveZipItem for each file contained in the archive baku ArhiceZipFile implements a nsIInputStream and what it does is the reading of the content. baku you have an ArchiveZipFile for each file.