【问题标题】:FILESTREAM - Reading documents stored in the File System using SQLFileStreamFILESTREAM - 使用 SQLFileStream 读取存储在文件系统中的文档
【发布时间】:2011-11-21 17:30:46
【问题描述】:

我将 Filestream 文档保存在 NTFS 中。每次我尝试使用下面的块访问它们时,都会在 Image.FromStream 行上收到“参数无效”错误消息。这与 FS 文件夹中存储的文件有什么关系吗?还是我的参数缺少什么? 有没有办法查看文件夹中的文件以验证它们的格式是否正确?

private static Image LoadPhotoImage(string filePath, byte[] txnToken)
    {
        Image photo;
        try
        {
            using (SqlFileStream sfs =
              new SqlFileStream(filePath, txnToken, FileAccess.Read))
            {
                photo = Image.FromStream(sfs,false);
                sfs.Close();
            }

            return photo;
        }
        catch (ArgumentException ae)
        {
            System.Diagnostics.Debug.WriteLine(ae.Message);
            return null;
        }
    }

【问题讨论】:

  • “我将 Filestream 文档保存在 NTFS 中”是什么意思? 几乎 听起来您将文档从 sql server 中拉出并将它们存储在其他地方,现在想要使用 SqlFileStream 对象...
  • 调试代码时流是空的吗?流真的包含 GDI 可以读取的图像吗?

标签: c# filestream


【解决方案1】:

根据MSDN Documentation,您不能将 SqlFileStream 用于此目的:

“SqlFileStream 类用于处理通过 FILESTREAM 属性存储在 SQL Server 2008 数据库中的 varbinary(max) 数据。”

只需使用 Image.FromFile 加载图像。

【讨论】:

  • 也许我误解了什么。如果 SqlFileStream 不用于加载存储在 sql server 文件流中的文件,那么它是做什么用的?
  • @Chris Lively:OP 声明他们正在从 NTFS(即 windows 文件系统)而不是 SQL Server 读取文件。
  • @competent_tech 我已经使用了SqlFileStream,就像 OP 正在做的那样,它是有效的。文件路径也是从数据库的角度来看的,所以Image.FromFile 可能不起作用。
  • 感谢您的反馈,伙计们。我将文档(pdf、.docs 和图像文件)从客户端机器加载到 SQL Server 上。因为我启用了 Filestream,所以我的数据不是存储在 db 中,而是存储在 NTFS 中。我可以看到我的文件系统中的文件夹。我现在需要的是一种检索它们并在用户控件上查看它们的方法。
  • 如果您可以编辑您的问题以包括对 LoadPhotoImage 的调用,以便我们确切地知道您正在做什么来获取路径,这可能会有所帮助?如果您正在做类似 msdn.microsoft.com/en-us/library/cc716724.aspx 的 ADO.Net 示例,那么我需要修改我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多