2

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

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

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

我有这个:

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

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

谢谢!!

4

2 回答 2

5

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

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

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

于 2009-04-26T16:47:48.407 回答
3

这是一个示例方法。使用 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
于 2009-04-26T17:04:01.287 回答