2016-12-20 3 views
0

Мы получаем входные данные от веб-службы в виде байта [], и мы обрабатываем его внутри, и нам нужно загрузить в другую веб-службу, которая принимает только как поток файлов.convert byte [] to file stream

Как преобразовать byte[] в file stream без записи на локальный диск в C#?

Редактировать: Это не дубликат. Я не спрашиваю, как конвертировать byte[] в поток памяти или файл. Я спрашиваю, как конвертировать byte[] в файл без записи на диск. Обратите внимание, что мне нужно отправить данные в виде файла steam на сторонний веб-сервис, к которому у меня нет доступа. Эта веб-служба принимает только поток файлов.

До сих пор я ниже код:

string fileWritePath = "c:\\temp\\test.docx"; 
//here fileContent is a byte[] 
File.WriteAllBytes(fileWritePath, fileContent); 
FileStream fileStream = new FileStream(fileWritePath, FileMode.Open, FileAccess.Read); 

Я не хочу, чтобы записать файл на локальном диске и создать файловый поток.

+0

Создать 'MemoryStream' и "магазин" байтовый [] массив в него. – i486

+2

Внешняя служба _web_ принимает поток _file_? Это кажется невозможным. Файловый поток находится на вашем диске, и веб-служба доступна через сеть. Это две совершенно разные вещи. – Sefe

+0

Я согласен с @Sefe. При этом «FileStream» является оберткой для дескриптора ресурса (обычно на диске). этот дескриптор имеет значение только локально, на компьютере, где вы создаете FileStream. Когда вы передаете этот объект на внешний веб-сервер, базовый дескриптор не будет иметь никакого значения. –

ответ

0

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

+0

см. Мой комментарий выше оригинального сообщения: даже если вы используете RAM-диск, я думаю, что FileStream не может работать, когда вы передаете его по сети. –

+0

@GianPaolo: Может быть, OP _says_ веб-сервис, но _means_ что-то еще. – Sefe

1

Использование MemoryStream:

using(var stream = new MemoryStream(byteArray)){ 
    SendStreamToService(stream); 
}