diff options
author | 2022-03-24 22:29:05 -0700 | |
---|---|---|
committer | 2022-03-24 22:29:05 -0700 | |
commit | be5789fe01eb510ba56c101e2cef82b37dc2ad07 (patch) | |
tree | 01ba5abbb80a289648d6952f542ee89ecf53b298 /src/javascript/jsc | |
parent | 120b2670da71f65e37b57b0137e38e06f1b55ada (diff) | |
download | bun-be5789fe01eb510ba56c101e2cef82b37dc2ad07.tar.gz bun-be5789fe01eb510ba56c101e2cef82b37dc2ad07.tar.zst bun-be5789fe01eb510ba56c101e2cef82b37dc2ad07.zip |
Auto-detect MimeType based on file extension
Diffstat (limited to 'src/javascript/jsc')
-rw-r--r-- | src/javascript/jsc/webcore/response.zig | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig index 9465d47c6..748828daf 100644 --- a/src/javascript/jsc/webcore/response.zig +++ b/src/javascript/jsc/webcore/response.zig @@ -1972,7 +1972,23 @@ pub const Blob = struct { pub fn initFile(pathlike: JSC.Node.PathOrFileDescriptor, mime_type: ?HTTPClient.MimeType, allocator: std.mem.Allocator) !*Store { var store = try allocator.create(Blob.Store); store.* = .{ - .data = .{ .file = FileStore.init(pathlike, mime_type) }, + .data = .{ .file = FileStore.init( + pathlike, + mime_type orelse brk: { + if (pathlike == .path) { + const sliced = pathlike.path.slice(); + if (sliced.len > 0) { + var extname = std.fs.path.extension(sliced); + extname = std.mem.trim(u8, extname, "."); + if (HTTPClient.MimeType.byExtension(extname)) |mime| { + break :brk mime.value; + } + } + + break :brk null; + } + }, + ) }, .allocator = allocator, .ref_count = 1, }; |