Open lidel opened 1 year ago
Need some help with historical context:
Data.mode
and Data.mtime
fields
Data.ctype
..Metadata.MimeType
field in unixfs.proto
already (seems to be not used for anything anywhere tho).Feels like there is a reason why Metadata
was not used for mtime
and mode
(see js-ipfs-unixfs/unixfs.proto)
@achingbrain @alanshaw do you remember why these fields landed in Data
and not Metadata
? Or who would be good person to ask?
This is a placeholder issue for creating IPIP to add support for storing explicit MIME/Content-Type in UnixFS DAG itself, like we already do for opt-in
mode
andmtime
, and acting on its presence on Gateways.There is alrernative approach to allow stating explicit content-type header via
_headers
file (similar to recently shipped_redirects
) – some notes in https://github.com/ipfs/specs/issues/257Context
UnixFSv2 never happened, but ability to explicitly specify
Content-Type
was one of my asks: https://github.com/ipld/legacy-unixfs-v2/issues/11Years later, we still guess
Content-Type
on gateways. While it is fine for most of the time, but we should provide users with ability to explicitly set media type at the time of data onboarding.Since 2018 we made some related development: we've added opt-in support for
mode
andmtime
attributes. ~2020 (https://github.com/ipfs/specs/issues/217#issuecomment-582369839). Support formode
andmtime
was implemented in JS-IPFS a while ago, Kubo still has PR open (https://github.com/ipfs/go-unixfs/pull/117).Initial idea (details to be fleshed out in IPIP) is to introduce optional
mtype
similar way. This is alternative to introducing_headers
file mentioned in https://github.com/ipfs/specs/issues/257.Ref.
Content-Type
: https://github.com/ipfs/in-web-browsers/issues/152Content-Type
based on filename and magic bytes: https://github.com/ipfs/kubo/blob/v0.17.0-rc2/core/corehttp/gateway_handler_unixfs_file.go#L55-L87/ipfs/cid
is requested without any filename, but with built-in support for explicit content type we could make it "just work".TODO
Content-Type
header--content-type
toipfs add
Content-Type
header on gateway, if present