Сохранение файла с SQL Server в поток памяти в C # - PullRequest
0 голосов
/ 03 марта 2010

У меня есть метод, который сохраняет файл, сохраненный в БД, в файл на диске. Как бы я изменил его, чтобы метод возвращал MemoryStream?

    public static void databaseFileRead(string varID, string varPathToNewLocation) {
        using (var varConnection = Locale.sqlConnectOneTime(Locale.sqlDataConnectionDetailsDZP))
        using (var sqlQuery = new SqlCommand(@"SELECT [RaportPlik] FROM [dbo].[Raporty] WHERE [RaportID] = @varID", varConnection)) {
            sqlQuery.Parameters.AddWithValue("@varID", varID);
            using (var sqlQueryResult = sqlQuery.ExecuteReader()) {
                if (sqlQueryResult != null) {
                    sqlQueryResult.Read();
                    var blob = new Byte[(sqlQueryResult.GetBytes(0, 0, null, 0, int.MaxValue))];
                    sqlQueryResult.GetBytes(0, 0, blob, 0, blob.Length);
                    using (var fs = new FileStream(varPathToNewLocation, FileMode.Create, FileAccess.Write)) {
                        fs.Write(blob, 0, blob.Length);
                    }
                }

            }
        }
    }

1 Ответ

2 голосов
/ 03 марта 2010

Измените FileStream на MemoryStream. Объявите объект потока на верхнем уровне метода и используйте его в операторе возврата

...