Erica Stockwell-Alpert
Erica Stockwell-Alpert

Reputation: 4853

Get stream from Sitecore File Item? (C#)

I have a file field on one of my items. I'm trying to implement the functionality that I have on an upload page, which works like this:

<input type="file" id="UpdateFile" runat="server" />

var file = UpdateFile.PostedFile;
Stream stream = file.InputStream;
StreamReader streamReader = new StreamReader(stream);
var helper = new VarietySelectorDataHelper("master");
var csv = new CsvReader(streamReader);

I don't know how to accomplish this though with a Sitecore file field. This is what I have so far:

var importFile = glassItem.CSV;
var fileItem = _db.GetItem(importFile.Id.ToString()); // get the Item from the media library
var media = MediaManager.GetMedia(fileItem);
var stream = media.GetStream();
StreamReader streamReader = new StreamReader(stream);

However, I can't pass the MediaStream into StreamReader, it's the wrong type. I'm not sure if I should even be getting the item as a Media object.

Upvotes: 0

Views: 1940

Answers (1)

Marek Musielak
Marek Musielak

Reputation: 27132

You should use .Stream property of what you recieved from GetStream() method:

new StreamReader(MediaManager.GetMedia(sampleMedia).GetStream().Stream)

so your code will be like that:

var importFile = glassItem.CSV;
var fileItem = _db.GetItem(importFile.Id.ToString()); // get the Item from the media library
var media = MediaManager.GetMedia(fileItem);
var stream = media.GetStream().Stream; // <-- check this line
new StreamReader(stream)

Upvotes: 5

Related Questions