2009-04-26 204 views
2

我正在尝试将PDF文件保存到SQL Server,并且我已经有了一个生成PDF的方法,但打开了一个显示此文件的窗口。C#3.0 - 如何将文件从MemoryStream保存到数据库?

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

我必须拯救MemoryStream对象,我准备要保存这个文件,显示等

我有这样的:

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

我使用Google aroung,我想我有将此MemoryStream转换为FileStream,以便将其保存到数据库,但我不知道如何。

谢谢!

回答

5

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

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

(将数据写入到数据库将取决于你如何在一般访问数据库的确切方式。如果你告诉我们更多关于这一点,我们也许可以给出更具体的建议。)

+0

Jon,就像你说的,我只需要将这个MemoryStream PDF文件保存到数据库。如果我使用byte [] myBytes = myMemory.ToArray(),我将能够将其保存到数据库? – AndreMiranda 2009-04-26 16:51:12

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 
相关问题