日期:2014-05-17  浏览次数:21026 次

【80分】通过网络url地址获取图片,转换成二进制保存到数据库
通过网络地址获取图片,转换成二进制保存到数据库,可是保存到数据库中其中有部分图片显示不完整。代码:

//转换二进制,通过网络地址获取图片,转换成二进制保存到数据库
 public static byte[] BitmapToBytes(string photourl)
       {
            byte[] bytes=null;
           Random seed = new Random();
           Stream stream = null;
           try
           {
               HttpWebRequest request = (HttpWebRequest)WebRequest.Create(photourl);
               WebResponse response = request.GetResponse();
                stream = response.GetResponseStream();
                bytes = new byte[4096 + (int)response.ContentLength];
                stream.Read(bytes, 0, Convert.ToInt32(4096 + (int)response.ContentLength));               
           }
           catch (Exception ex)
           {}
}



现在是部分图片显示上面样式。大部分都正确。。如果把加红的部分byte[1024];改为固定的只要小于1024字节的图片就能显示大于的统统不显示。。



图片见下面样式



有人用过这个方面没有。把完整上的url地址获取图片。然后转换成二进制流保存。我这儿有些图片老是保存不完整

先说明,在添加数据到数据中我是写对了的

 
SqlParameter parameter = command.CreateParameter();
                   parameter.SqlDbType = SqlDbType.Image;
                   parameter.ParameterName = "@photo";
                   parameter.Value = images;
                   command.Parameters.Add(parameter);



------最佳解决方案--------------------
本帖最后由 net_lover 于 2011-09-26 14:14:20 编辑
String url = "http://img04.taobaocdn.com/sns_album/i4/T1yAdWXgdGXXb1upjX.jpg";
    String fileName = url.Substring(url.LastIndexOf("/") + 1);
    String refer = url.Substring(0, url.LastIndexOf("/") + 1);
    System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;
    req.AllowAutoRedirect = true;
    req.Referer = refer;
    req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";