feat: P1 — audio/video modal player + MIME detection via magic bytes (infer)
Backend: - Add infer crate for magic-byte MIME detection (<1μs per file) - New src/common/mime_detect.rs: refine_content_type() with priority magic bytes > extension > client Content-Type - Inject MIME refinement in file upload handler (after spool to temp) - Inject MIME refinement in chunked upload handler (after assembly) Frontend: - Extend isViewableFile() to include audio/* and video/* - Add createMediaViewer() to InlineViewer with <audio>/<video> controls - Blob URL pattern for authenticated streaming playback - Graceful fallback for unsupported codecs (error message + download) - CSS: video player, audio wrapper with animated icon, responsive
This commit is contained in:
Generated
+21
@@ -366,6 +366,17 @@ dependencies = [
|
||||
"shlex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfb"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"fnv",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.4"
|
||||
@@ -1416,6 +1427,15 @@ dependencies = [
|
||||
"hashbrown 0.16.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "infer"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7"
|
||||
dependencies = [
|
||||
"cfb",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "inout"
|
||||
version = "0.1.4"
|
||||
@@ -1838,6 +1858,7 @@ dependencies = [
|
||||
"http-range-header",
|
||||
"hyper",
|
||||
"image",
|
||||
"infer",
|
||||
"jsonwebtoken",
|
||||
"lru",
|
||||
"md5",
|
||||
|
||||
Reference in New Issue
Block a user