C # 3.0 - Как я могу сохранить файл в базу данных из MemoryStream? - PullRequest
2 голосов
/ 26 апреля 2009

Я пытаюсь сохранить файл PDF на SQL Server, и у меня уже есть метод, который генерирует PDF, но открывает окно с этим файлом.

Но теперь мне нужно сгенерировать PDF, но он должен быть сохранен в базе данных в поле изображения.

И мне нужно сохранить этот файл из объекта MemoryStream, который я собираюсь сохранить, показать и т. Д.

У меня есть это:

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

Я гуглил и думаю, мне нужно преобразовать этот MemoryStream в FileStream, чтобы я мог сохранить его в БД, но я не знаю как.

Спасибо !!

Ответы [ 2 ]

5 голосов
/ 26 апреля 2009

Зачем вам нужно сначала сохранять его в файл, чтобы сохранить в базе данных?

Если вы это сделаете, то лучше всего использовать MemoryStream.WriteTo, передавая FileStream. Однако, если вам нужны данные в виде байтового массива только для записи в базу данных, вы можете просто использовать метод ToArray.

(Точный способ записи данных в базу данных будет зависеть от того, как вы обращаетесь к базе данных в целом. Если вы расскажете нам больше об этом, мы, вероятно, можем дать более конкретный совет.)

3 голосов
/ 26 апреля 2009

Вот пример метода. Вы передаете документ как массив байтов, используя 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
...