我可以将Stream对象转换为FileInfo对象吗?

Mic*_*ael 10 c# asp.net-mvc

对于ExcelPackage构造函数,您需要一个FileInfo对象.我宁愿使用某种流对象(fi MemoryStream),因为我不需要将文件保存到服务器本身,而是将其作为FileStream公开给用户.我不想制作我必须从服务器中删除的文件,这些服务器仅用于生成目的并且从未再次使用过.除此之外,我还需要服务器上目录/文件上的应用程序/用户的必要权限.

那么我的问题是:如何将流对象转换为FileInfo对象.

Fre*_*örk 7

你不能把Stream这样的转换为a FileInfo; 它们代表完全不同的东西.A Stream包含可能代表或不代表磁盘上文件的数据.FileInfo另一方面,A 包含有关文件的元数据,可能存在也可能不存在.

可以做的是将Stream文件的内容写入磁盘上,创建FileInfo指向该文件并将其传递FileInfo给构造函数.

  • 他明确表示他不想这样做. (5认同)

Mic*_*ael 2

将以下构造函数添加到 ExcelPackage 可以改为使用 Streams。

public ExcelPackage( Stream stream ) {
    _package = Package.Open( stream, FileMode.Create, FileAccess.ReadWrite );

    Uri uriDefaultContentType = new Uri( "/default.xml", UriKind.Relative );
    PackagePart partTemp = _package.CreatePart( uriDefaultContentType, "application/xml" );

    XmlDocument workbook = Workbook.WorkbookXml; 

    _package.CreateRelationship( Workbook.WorkbookUri, TargetMode.Internal, schemaRelationships + "/officeDocument" );

    _package.DeletePart( uriDefaultContentType );
}
Run Code Online (Sandbox Code Playgroud)