2009-04-26 4 views
2

SQL Server에 PDF 파일을 저장하려고하는데 이미 PDF를 생성하는 방법이 있지만이 파일을 보여주는 창이 열립니다.C# 3.0 - MemoryStream에서 데이터베이스에 파일을 저장하려면 어떻게해야합니까?

하지만 이제 PDF를 생성해야하지만 이미지 필드의 데이터베이스에 저장해야합니다.

그리고 내가 구원을 준비 MemoryStream을 개체에서이 파일을 저장해야했다 등

나는이있다 :

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

내가 aroung 인터넷 검색을했습니다 나는 내가 가지고있는 것 같아요 이 MemoryStream을 FileStream으로 변환하여 DB에 저장할 수 있지만 어떻게해야할지 모르겠다.

감사합니다.

답변

5

왜 데이터베이스에 저장하려면 먼저 파일에 저장해야합니까?

가장 좋은 방법은 FileStream을 전달하는 MemoryStream.WriteTo을 사용하는 것입니다. 그러나 데이터베이스에 쓸 때 바이트 배열로만 데이터가 필요한 경우 ToArray 메서드를 사용할 수 있습니다.

(당신이 우리에게 그것에 대해 더 말한다면 어떻게 일반적으로 데이터베이스를 액세스하는에 따라 달라집니다 데이터베이스에 데이터를 작성하는 정확한 방법입니다. 우리는 아마 더 구체적인 조언을 제공 할 수 있습니다.)

+0

존, 말했듯이이 MemoryStream PDF 파일을 데이터베이스에 저장하면됩니다. byte [] myBytes = myMemory.ToArray()를 사용하면 이것을 데이터베이스에 저장할 수 있습니까? – AndreMiranda

+1

@AndreMiranda : 사용중인 데이터베이스와 사용 방법에 따라 다릅니다. – Samuel

+0

정확히 사무엘이 말한 것. 현재 데이터베이스를 수정하는 데 사용중인 정보가 없습니다. 일반적으로 바이트 배열은 트릭을 수행합니다 (예 : 이를 SqlDbType.Image 형식의 삽입 문에서 매개 변수로 지정합니다. –

3

는 여기 예제 방법. memorystream.ToArray()를 사용하여 문서를 Byte Array로 전달합니다.

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 
관련 문제