【问题标题】:Get stream from Sitecore File Item? (C#)从 Sitecore 文件项获取流? (C#)
【发布时间】:2016-10-21 15:57:59
【问题描述】:

我的一件物品上有一个文件字段。我正在尝试实现上传页面上的功能,其工作原理如下:

<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);

我不知道如何使用 Sitecore 文件字段来完成此操作。这是我目前所拥有的:

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);

但是,我无法将 MediaStream 传递给 StreamReader,这是错误的类型。我不确定我是否应该将该项目作为 Media 对象。

【问题讨论】:

    标签: c# file stream sitecore media


    【解决方案1】:

    您应该使用您从GetStream() 方法收到的内容的.Stream 属性:

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

    所以你的代码会是这样的:

    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)
    

    【讨论】:

    • 只是一般性评论:请使用using指令/关闭流以避免内存泄漏
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多