diff --git a/extensions/msteams/src/media-helpers.test.ts b/extensions/msteams/src/media-helpers.test.ts index 27a9c08ec2..51a3ae0f81 100644 --- a/extensions/msteams/src/media-helpers.test.ts +++ b/extensions/msteams/src/media-helpers.test.ts @@ -145,6 +145,15 @@ describe("msteams media-helpers", () => { expect(isLocalPath("~/Downloads/image.png")).toBe(true); }); + it("returns true for Windows absolute drive paths", () => { + expect(isLocalPath("C:\\Users\\test\\image.png")).toBe(true); + expect(isLocalPath("D:/data/photo.jpg")).toBe(true); + }); + + it("returns true for Windows UNC paths", () => { + expect(isLocalPath("\\\\server\\share\\image.png")).toBe(true); + }); + it("returns false for http URLs", () => { expect(isLocalPath("http://example.com/image.png")).toBe(false); expect(isLocalPath("https://example.com/image.png")).toBe(false); diff --git a/extensions/msteams/src/media-helpers.ts b/extensions/msteams/src/media-helpers.ts index c4368fb4d6..ca5cc70dcf 100644 --- a/extensions/msteams/src/media-helpers.ts +++ b/extensions/msteams/src/media-helpers.ts @@ -65,7 +65,21 @@ export async function extractFilename(url: string): Promise { * Check if a URL refers to a local file path. */ export function isLocalPath(url: string): boolean { - return url.startsWith("file://") || url.startsWith("/") || url.startsWith("~"); + if (url.startsWith("file://") || url.startsWith("/") || url.startsWith("~")) { + return true; + } + + // Windows drive-letter absolute path (e.g. C:\foo\bar.txt or C:/foo/bar.txt) + if (/^[a-zA-Z]:[\\/]/.test(url)) { + return true; + } + + // Windows UNC path (e.g. \\server\share\file.txt) + if (url.startsWith("\\\\")) { + return true; + } + + return false; } /**