【问题标题】:C# 3.0 - How can I save a file to database from a MemoryStream?C# 3.0 - 如何将文件从 MemoryStream 保存到数据库?
【发布时间】:2010-10-21 22:15:29
【问题描述】:

我正在尝试将 PDF 文件保存到 SQL Server,并且我已经有一个生成 PDF 的方法,但会打开一个显示该文件的窗口。

但是,现在我必须生成一个 PDF,但必须将它保存到图像字段中的数据库中。

我必须从准备保存、显示等的 MemoryStream 对象中保存此文件。

我有这个:

MemoryStream m = PDFHelper.gereratePDF(text, title);

我在谷歌上搜索,我想我必须将此 MemoryStream 转换为 FileStream,以便将其保存到 DB,但我不知道如何。

谢谢!!

【问题讨论】:

    标签: c# c#-3.0 memorystream


    【解决方案1】:

    这是一个示例方法。您使用 memorystream.ToArray() 将文档作为字节数组传递。

    public static Boolean SaveDocument(Guid candidateId, String fileName, String contentType, Byte[] data) {
        Boolean bResult = false;
    
        Database db = DatabaseFactory.CreateDatabase(Databases.Hphr.ToString());
        using (DbCommand dbCommand = db.GetStoredProcCommand("CandidateDocumentSave")) {
            db.AddInParameter(dbCommand, "CandidateId", DbType.Guid, candidateId);
            db.AddInParameter(dbCommand, "FileName", DbType.String, fileName);
            db.AddInParameter(dbCommand, "ContentType", DbType.String, contentType);
            db.AddInParameter(dbCommand, "FileType", DbType.String, Path.GetExtension(fileName).Substring(1));
            db.AddInParameter(dbCommand, "Data", DbType.Binary, data);
            db.ExecuteNonQuery(dbCommand);
            bResult = true;
        } // using dbCommand
        return bResult;
    } // method::SaveDocument
    

    【讨论】:

      【解决方案2】:

      为什么需要先将其保存到文件中才能将其保存到数据库中?

      如果你这样做,最好的方法可能是使用MemoryStream.WriteTo,传入FileStream。但是,如果您只需要将数据作为字节数组写入数据库,则可以使用ToArray 方法。

      (将数据写入数据库的确切方式取决于您访问数据库的一般方式。如果您告诉我们更多相关信息,我们可能会提供更具体的建议。)

      【讨论】:

      • 乔恩,就像你说的,我只需要将这个 MemoryStream PDF 文件保存到数据库中。如果我使用 byte[] myBytes = myMemory.ToArray() 我将能够将其保存到数据库中?
      • @AndreMiranda:这将取决于您使用的数据库以及使用方式。
      • 正是塞缪尔所说的。我们目前不知道您使用什么来修改数据库。通常一个字节数组可以解决问题,例如将其指定为类型为 SqlDbType.Image 的插入语句中的参数。
      • @Samuel:我使用的是 SQL Server 2005,此 PDF 将保存到图像类型字段
      • 我通过 MemoryStream.ToArray() 将 XpsDocuments 放到一个 blob 中,所以这也适用于 PDF。
      猜你喜欢
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2019-05-15
      • 2022-06-29
      • 2018-04-01
      • 2014-12-22
      • 1970-01-01
      • 2011-02-14
      相关资源
      最近更新 更多