protected override NodeContent GetContent(NodeBase node, NodeContentParameters contentParameters) { var callPath = $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"; try { if (!node.Exists()) { return(NodeContent.CreateDelayedWriteContent(new MemoryStream())); } NodeContent content = null; if (node.NodeType == NodeType.File) { WindowsIdentity.RunImpersonated(_userToken, () => { var file = SmbFileSystemHelper.FilePathToCIFS(_userMount + node.Path.StringPath); content = NodeContent.CreateDelayedWriteContent(File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)); }); } else { throw new NotImplementedException(); } return(content); } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }
protected override NodeContent GetContent(NodeBase node, NodeContentParameters contentParameters) { var callPath = $"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"; try { if (!node.Exists()) { return(NodeContent.CreateDelayedWriteContent(new MemoryStream())); } using (var scope = _factory.CreateScope()) { if (node.NodeType == NodeType.File) { var conf = scope.ServiceProvider.GetRequiredService <IConfiguration>(); var uow = scope.ServiceProvider.GetRequiredService <IUnitOfWork>(); var folderEntity = CompositeFileSystemHelper.FolderPathToEntity(uow, _userEntity, node.Parent.Path.StringPath); var fileEntity = uow.UserFiles.Get(QueryExpressionFactory.GetQueryExpression <tbl_UserFile>() .Where(x => x.IdentityId == _userEntity.IdentityId && x.FolderId == folderEntity.Id && x.VirtualName == node.Name).ToLambda()) .Single(); var file = new FileInfo(conf["Storage:UnstructuredDataPath"] + Path.DirectorySeparatorChar + fileEntity.RealPath + Path.DirectorySeparatorChar + fileEntity.RealFileName); fileEntity.LastAccessed = DateTime.UtcNow; uow.UserFiles.Update(fileEntity); uow.Commit(); return(NodeContent.CreateDelayedWriteContent(File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))); } else { throw new NotImplementedException(); } } } catch (Exception ex) { Log.Error(ex.ToString()); throw; } }
protected override NodeContent GetContent(NodeBase node, NodeContentParameters contentParameters) { //error if (!node.Exists()) { return(NodeContent.CreateDelayedWriteContent(new MemoryStream())); } var resultStream = new MemoryStream(); _store[node].Content.CopyTo(resultStream); resultStream.Position = 0; _store[node].Content.Position = 0; return(contentParameters.AccessType == NodeContentAccess.Read ? NodeContent.CreateReadOnlyContent(resultStream) : NodeContent.CreateDelayedWriteContent(resultStream)); }