如何使用 ASP.NET Core 读取 SQL 服务器文件流
How can I read SQL Server filestream with ASP.NET Core
我正在寻找一种方法来转换 Pic.PathName()
和 GET_FILESTREAM_TRANSACTION_CONTEXT()
以提供 link 以便在 ASP.NET Core 中下载。
我在 .NET Framework 中看到 SqlFileStream
,但它在 .NET Core 中不起作用。
我认为没有合理的方法从 .NET Core 获取文件句柄访问文件流 blob。从技术上讲,在 Windows 上,您可以通过 P/Invoke 和 ODBC 驱动程序获取文件句柄,但您可能永远不想这样做。
因为您可以很容易地通过 SQL 服务器获得对文件流 blob 的流式访问。使用基于句柄的访问有轻微的性能优势,但可能还不够重要。如果你真的需要它,你可能最好使用 FileTables,并且只使用 UNC 路径访问文件。
无论如何,文件流 blob 可以作为 table 上的 varbinary(max) 列访问,并且 .NET SqlClient 支持流式 blob。有关信息和示例,请参阅 SqlClient Streaming Support。如果它是一个大文件,您将希望将结果直接流式传输到客户端。
我正在寻找一种方法来转换 Pic.PathName()
和 GET_FILESTREAM_TRANSACTION_CONTEXT()
以提供 link 以便在 ASP.NET Core 中下载。
我在 .NET Framework 中看到 SqlFileStream
,但它在 .NET Core 中不起作用。
我认为没有合理的方法从 .NET Core 获取文件句柄访问文件流 blob。从技术上讲,在 Windows 上,您可以通过 P/Invoke 和 ODBC 驱动程序获取文件句柄,但您可能永远不想这样做。
因为您可以很容易地通过 SQL 服务器获得对文件流 blob 的流式访问。使用基于句柄的访问有轻微的性能优势,但可能还不够重要。如果你真的需要它,你可能最好使用 FileTables,并且只使用 UNC 路径访问文件。
无论如何,文件流 blob 可以作为 table 上的 varbinary(max) 列访问,并且 .NET SqlClient 支持流式 blob。有关信息和示例,请参阅 SqlClient Streaming Support。如果它是一个大文件,您将希望将结果直接流式传输到客户端。