您的位置:首页 > 数据库

SilverLight C#程序之:把文件转为二进制流保存到数据库(任意文件类型)

2011-04-12 14:17 651 查看
在C#程序里面我们经常会遇到文件上传的问题。

目前正在做一个SilverLight项目,也需要上传文件这样一个功能。。。

杯具的是SilverLight没有提供给我们够牛的上传控件,为此我们不得不,花费大量的精力自定义一个上传控件。。。

废话不多说看效果:

View Code

//两个命令 确定和退出
SaveCommand = new DelegateCommand(DoSave);
CancelCommand = new DelegateCommand(() => View.Close());

/// <summary>
/// 保存数据
/// </summary>
void DoSave()
{
//获取上传控件里面的文件
var fileInfos = View.Conterl.file.SelectedFiles;
if (fileInfos == null)
{
MessageBox.Show("没有要上传的文件");
return;
}
//获取主界面 列表里面的行数
//用于修改 假如主界面有三个 现在上传的就给原基础上添加
//没有做防重复 事件
var i= IContractListViewModel.ConAttachmentModelList.Count;
ConAttachmentModelList = new List<ConAttachmentModel>();
//遍历上传控件里面的所有文件
//本控件可以上传多个文件
foreach (var fileInfo in fileInfos)
{
//序号++
i++;
//读取文件
var fs = fileInfo.OpenRead();
//实例二进制转换器
var br = new BinaryReader(fs);
//写入二进制流
var filebyte = br.ReadBytes((int) fs.Length);
//实现一个保存到数据库的实体
ConAttachmentModel = new ConAttachmentModel
{
ConAtt_Files = filebyte,
ConAtt_MakerName = "管理员",
ConAtt_Name = fileInfo.Name,
ConAtt_OrderNum = i,
ConAtt_Remark = "文件名: "+fileInfo.Name + "上传时间: " + DateTime.Now
};
ConAttachmentModelList.Add(ConAttachmentModel);
}
//关闭窗口
CancelCommand.Execute(null);
//遍历当前列表
//添加到主窗体
foreach (var conAttachmentModel in ConAttachmentModelList)
{
IContractListViewModel.ConAttachmentModelList.Add(conAttachmentModel);
}        }


主窗体保存数据库

foreach (var conAttachmentModel in ContractModel.ConAttachmentModelList)
{
conAttachmentModel.ConAtt_Id = Guid.NewGuid();
conAttachmentModel.Save();
}


大功告成!!!

作者:记忆逝去的青春
出处:http://www.cnblogs.com/lukun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过http://www.cnblogs.com/lukun/ 联系我,非常感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐