数据库类型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();