数据库类型varbinary(MAX)在.net中的转换

 

1.在.net中把该地段定义为byte[]数组。

//数据库类型为varbinary(MAX)

private byte[] elementContent;

public byte[] ElementContent
{
get { return elementContent; }
set { elementContent = value; }
}

2.传值把需要传输的文件转化为二进制流

byte[] FileArray = UpLoadFile(fuCheck);

ElementContent=FileArray ;

方法

public byte[] UpLoadFile(FileUpload fu)
{
//获取由客户端指定的上传文件的访问
HttpPostedFile upFile = fu.PostedFile;
//得到上传文件的长度
int upFileLength = upFile.ContentLength;

byte[] FileArray = new Byte[upFileLength];

Stream fileStream = upFile.InputStream;
fileStream.Read(FileArray, 0, upFileLength);
return FileArray;
}



3.在后台直接赋值,不用类型转换
par[2] = new SqlParameter("@elementContent", SqlDbType.VarBinary);
par[2].Value = tbl_downLoad.ElementContent;



4.解析二进制流转换文件

DataTable dt = downDal.GetDown(downLoadId); //获取文件信息

Response.Buffer = true;
Response.Clear();
Response.ContentType = dt.Rows[0]["contentType"].ToString();
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(dt.Rows[0]["ElementName"].ToString(), System.Text.Encoding.UTF8)); //文件名称

Response.BinaryWrite((byte[])dt.Rows[0]["elementContent"]);//二进制流
Response.Flush();
Response.End();

 

 

posted @ 2011-09-21 17:47  偷懒的小猫咪  阅读(1001)  评论(0编辑  收藏  举报