读书人

请各位帮忙看看多谢

发布时间: 2012-06-20 20:37:21 作者: rapoo

请各位帮忙看看,谢谢
目前是想把图片存放到数据库,
做法:

C# code
 //1、转换为字节数组strImgPath = @"D:\visual studio 2010\Projects\MainPage\Alarm.png";MemoryStream ms = new MemoryStream();   System.Drawing.Image.FromFile(strImgPath).Save(ms, System.Drawing.Imaging.ImageFormat.Png);ProcParameter[] imgParams = new ProcParameter[1];imgParams[0] = new ProcParameter("@img", SqlDbType.Image, System.Text.Encoding.Unicode.GetString(ms.GetBuffer()), ParameterDirection.Input);  //这里把图片字节数组转换为string(ProcParameter的需要,自定义的一个类),//2、将ProcParameter序列化(xml)由于要传到服务端,    SrvProxyAdapter.ExecSql(strSql, PublicMethod.GetStringBySerializeProcParam(imgParams), -1);     //ExecSql函数会反序列化imgParams,然后执行,这时候就报错了,说xml文档()出错        public static string GetStringBySerializeProcParam(ProcParameter[] Params)        {            // 序列化            XmlSerializer xmlFormatter = new XmlSerializer(typeof(ProcParameter[]));            StringWriter StrWriter = new StringWriter();                        xmlFormatter.Serialize(StrWriter, Params);            //传递的参数信息            return StrWriter.GetStringBuilder().ToString();        }

正常查询数据库的非图片是没问题的,我跟踪了下xml文档,里面显示了中文(不知道是否有问题),编码是UTF-16的,请各位帮忙查下原因,先谢了

[解决办法]
直接存储称二进制不行么
[解决办法]
是的,这样直接将byte[]存储进去就行了
[解决办法]
如果是网站的话,建议你倒不如直接存相对路径,这样比较方便,而且对于 DB 的压力也不会很大,存二进制是很好的,但是数据量大的时候,对 DB 的压力是很大的。

读书人网 >C#

热点推荐