SilverLight C#程序之:把二进制数据流转换为文件 并打开文件及exe程序

本文介绍了一种方法,通过 Silverlight 和 C# 实现从数据库中读取二进制文件数据,并将其转换回原始文件进行预览。具体步骤包括使用 XAML 创建界面、定义按钮和数据网格,以及编写用于打开文件的 C# 代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

上节我们了解了 将文件转换为二进制数据流 并保存到数据库中。。。

这节我们来看看 怎么将这些二进制流转换为文件 并打开他。。。

2011041214243653.jpg

点击查看之后(此数据为保存到数据库中的数据)

2011041214270113.jpg

SilverLight代码

ContractedBlock.gif ExpandedBlockStart.gif View Code

   
< Grid >
< Grid.RowDefinitions >
< RowDefinition Height ="*" ></ RowDefinition >
< RowDefinition Height ="30" ></ RowDefinition >
</ Grid.RowDefinitions >
< sdk:DataGrid x:Name ="gridConAttachmentModel" Grid.Row ="0" RowHeight ="25" HorizontalAlignment ="Stretch" VerticalAlignment ="Stretch" Background ="#FEFEFE" HeadersVisibility ="Column" BorderThickness ="0,1,0,0" GridLinesVisibility ="All" AutoGenerateColumns ="False" FrozenColumnCount ="1" AreRowDetailsFrozen ="True"
ItemsSource
=" {Binding ConAttachmentModelList} " SelectedItem =" {Binding ConAttachmentModel} " IsReadOnly ="True" >
< sdk:DataGrid.Columns >
< sdk:DataGridTextColumn Header ="序号" Binding =" {Binding ConAtt_OrderNum,Mode=TwoWay} " IsReadOnly ="True" />
< sdk:DataGridTextColumn Header ="附件名称" Binding =" {Binding ConAtt_Name,Mode=TwoWay} " />
< sdk:DataGridTextColumn Header ="附件资料" Binding =" {Binding ConAtt_Name,Mode=TwoWay} " >
</ sdk:DataGridTextColumn >
< sdk:DataGridTextColumn Header ="操作员编号" Binding =" {Binding ConAtt_MakerId,Mode=TwoWay} " IsReadOnly ="True" Visibility ="Collapsed" ></ sdk:DataGridTextColumn >
< sdk:DataGridTextColumn Header ="操作员名称" Binding =" {Binding ConAtt_MakerName,Mode=TwoWay} " IsReadOnly ="True" />
< sdk:DataGridTextColumn Header ="备注" Binding =" {Binding ConAtt_Remark,Mode=TwoWay} " />
< sdk:DataGridTemplateColumn Header ="预览" Width ="90" >
< sdk:DataGridTemplateColumn.CellTemplate >
< DataTemplate >
< HyperlinkButton Content ="查看" Margin ="5" Click ="HyperlinkButton_Click" ></ HyperlinkButton >
</ DataTemplate >
</ sdk:DataGridTemplateColumn.CellTemplate >
</ sdk:DataGridTemplateColumn >
</ sdk:DataGrid.Columns >
</ sdk:DataGrid >
< Button Height ="20" Width ="80" Margin ="5" Content ="添加文件" Grid.Row ="1" HorizontalAlignment ="Left" Command =" {Binding UploadCommd} " >
</ Button >
</ Grid >

cs代码

ContractedBlock.gif ExpandedBlockStart.gif View Code

   
private void HyperlinkButton_Click( object sender, RoutedEventArgs e)
{
// 获取当前选择行的实体对象
var conAttachmentModel = gridConAttachmentModel.SelectedItem as ConAttachmentModel;
if (conAttachmentModel != null )
{
// 如果不为空 把获取到的对象作为参数传入 web端 用来打开文件
RequestService.Sent(ContractManageUriNames.OpenContractFiles, conAttachmentModel,
delegate ( object sent, ResponseArgs args) { });
}
}

// 打开文件
public void OpenContractFiles(ConAttachmentModel conAttachmentModel)
{
// 获取文件类型
// var filesType = conAttachmentModel.ConAtt_Name.Substring(conAttachmentModel.ConAtt_Name.LastIndexOf("."));
// 获取二进制流文件
var filebyte = conAttachmentModel.ConAtt_Files;
// 创建的文件路径
var path = @" C:\Documents and Settings\Administrator\Local Settings\Temp\\ " + conAttachmentModel.ConAtt_Name;
// 按照路径实例化文件
var file = new FileStream(path, FileMode.Create, FileAccess.Write);
// 实例化一个用于写的 BinaryWriter
var bw = new BinaryWriter(file);
// 将传进来的二进制字符转换为8位无符号整数数组再写进去
bw.Write(filebyte);
bw.Close();
// 关闭二进制流写入器
file.Close(); // 关闭文件流

// 创建Process命令
var cmd = new Process();
// 创建要运行的文件或者程序
var startfile = new ProcessStartInfo
{
FileName
= file.Name, // 文件完全路径
WindowStyle = ProcessWindowStyle.Normal, // Windows窗口样式
UseShellExecute = true // 为true,则用默认的打开方式打开,如果是exe等,设置为false
};
cmd.StartInfo
= startfile;
cmd.Start();
// 打开文件
}

大功告成!!!


作者:记忆逝去的青春
出处:http://www.cnblogs.com/lukun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过http://www.cnblogs.com/lukun/  联系我,非常感谢。

转载于:https://www.cnblogs.com/lukun/archive/2011/04/12/2013634.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值