|
|
@@ -23,6 +23,7 @@ using MediaBrowser.Controller.Entities;
|
|
|
using MediaBrowser.Controller.Entities.Audio;
|
|
|
using MediaBrowser.Controller.Entities.Movies;
|
|
|
using MediaBrowser.Controller.Entities.TV;
|
|
|
+using MediaBrowser.Controller.IO;
|
|
|
using MediaBrowser.Controller.Library;
|
|
|
using MediaBrowser.Controller.Providers;
|
|
|
using MediaBrowser.Model.Activity;
|
|
|
@@ -700,7 +701,18 @@ public class LibraryController : BaseJellyfinApiController
|
|
|
// Quotes are valid in linux. They'll possibly cause issues here.
|
|
|
var filename = Path.GetFileName(item.Path)?.Replace("\"", string.Empty, StringComparison.Ordinal);
|
|
|
|
|
|
- return PhysicalFile(item.Path, MimeTypes.GetMimeType(item.Path), filename, true);
|
|
|
+ var filePath = item.Path;
|
|
|
+ if (item.IsFileProtocol)
|
|
|
+ {
|
|
|
+ // PhysicalFile does not work well with symlinks at the moment.
|
|
|
+ var resolved = FileSystemHelper.ResolveLinkTarget(filePath, returnFinalTarget: true);
|
|
|
+ if (resolved is not null && resolved.Exists)
|
|
|
+ {
|
|
|
+ filePath = resolved.FullName;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return PhysicalFile(filePath, MimeTypes.GetMimeType(filePath), filename, true);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|