我有一个 ASP.NET 网站。我想将文件上传到网站并将其保存到 SqlServer 2012 中的 FileTable 中。
上传后,我的网站代码有一个 Stream 对象,我想使用它来保存
System.IO.File.Create()
当我转到时,可以在 Windows 资源管理器中访问 FileTable
\\ComputerName\FileStremShareName\FileStreamDirectoryName\FileTableName
我可以使用 Windows 资源管理器在此文件夹中手动创建文件。我还可以使用 SQL 将文件插入到 File 表中。在这两种情况下,Windows 资源管理器和 SQL Server 都会按预期显示文件。
但是,如果我尝试使用 System.IO.File.CreateFile 在路径中创建文件,例如
File.Create(\\\\ComputerName\FileStremShareName\FileStreamDirectoryName\FileTableName\myfile.jpg)
我收到消息“访问路径 '[path]' 被拒绝”
我认为这是因为我的 IIS 应用程序池标识无权读取/写入此位置。
通常,我会进入 NTFS 权限并为身份帐户分配读/写访问权限,但我无法执行此操作,因为底层文件夹对我隐藏。
我曾考虑将我的 Stream 对象转换为字节数组并使用 SQL 将其插入到 FileTable 中,但这似乎效率低下,因为我必须先将流转换为字节数组,然后才能将其传递给 SQL。这似乎我正在解析我的文件数据两次以保存一次。
是否可以在 ASP.NET 网站中使用 File.Create 或类似方法写入文件表。如果是这样,我该怎么做?