概述
上節我們瞭解了 將檔案轉換為位元據流 並儲存到資料庫中。。。
這節我們來看看 怎麼將這些二進位流轉換為檔案 並開啟他。。。
點擊查看之後(此資料為儲存到資料庫中的資料)
SilverLight代碼
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代碼
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/ 聯絡我,非常感謝。