图片存入数据库,求助-从根据图片的ImageUrl获取图片信息,并存入数据库

求助-从根据图片的ImageUrl获取图片信息,并存入数据库 - 故障解答 - 电脑教程网

求助-从根据图片的ImageUrl获取图片信息,并存入数据库

日期:2007-03-21   荐:
求助-从根据图片的ImageUrl获取图片信息,并存入数据库private byte[] GetImageFromUrl(string strUrl, int iImageWidth, int iImageHeight){HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(strUrl) ;HttpWebResponse resp = (HttpWebResponse)req.GetResponse() ;System.IO.Stream sr = resp.GetResponseStream() ;byte[] buffer = new byte[iImageWidth * iImageHeight] ;IAsyncResult asyncResult = sr.BeginRead(buffer, 0, buffer.Length, null, null) ;sr.EndRead(asyncResult) ;sr.Close() ;return buffer ;}然后将得到的buffer数据,存入datarow的图像列(Image)中,但为什么我每次只能读取一部分图片数据,另一部分是背景色。不知道我表述清楚没有,高人指点!非常感谢!最近刚做完一个类似程序:private void InsertPhoto(){//分析在body中存在的图片连接,将这些连接中相关的图片存到uploadfile内的对应的GUID文件夹中.//如果存在图片连接,则在uploadfile文件夹中建立一个对应的GUID编码文件夹中.//通过正则表达式提取出body中的所有图片资源,然后下载下载string s = Body1.Text ;Regex re = new Regex(@"<img[^>]*src\s*=\s*(""(?<src>[^""] )""|'(?<src>[^'] )'|(?<src>[^\s>] ))[^>]*?>",RegexOptions.IgnoreCase);MatchCollection mc = re.Matches(s);String[] slist = new String[mc.Count];for (int i=0; i < mc.Count; i )slist[i] = mc[i].Groups["src"].Value;//针对每一个链接进行处理 //包括:将链接对应的文件存到数据库中//更新链接对应到数据中的图片数据.foreach (string ss in slist){//判断是否是远程主机文件.if(ss.IndexOf("http://",0,ss.Length )>-1){System.Drawing.Image img = System.Drawing.Image.FromStream(new System.Net.WebClient().OpenRead(ss));MemoryStream stream1 = new MemoryStream(); System.Drawing.Imaging.ImageFormat imageFormat1=GetImageFormat1(ss);img.Save (stream1,imageFormat1);int nFileLen = (int)stream1.Length; byte[] myData = new byte[nFileLen];stream1.Read (myData,0,nFileLen); //将图片信息读入到byte[]中string contentType=GetContentType1(ss);string fileID=WriteToDB(ss,ID1.Text,contentType,ref myData); //得到插入到记录中的ID值,用于修改freetextBox中的值 .string imageNewUrl="ShowPhoto.aspx?FileID=" fileID;Body1.Text=Body1.Text.Replace (ss,imageNewUrl);}}}//在上面的方法中用到的功能函数:/// <summary>/// 将上传的文件保存到数据库中./// </summary>/// <param name="downloadName">除图片外的其它可以下载的文下载时显示的文件名</param>/// <param name="strName">此上传文件属于那一个文本</param>/// <param name="strType">下载的文件类型</param>/// <param name="Buffer">文件的实体内容.</param>/// <returns>上传文件选定的唯一数据库编号</returns>private string WriteToDB(string fileName,string strName, string strType, ref byte[] Buffer){string nFileID =""; int start1=fileName.LastIndexOf ("\\");start1=start1 1;int end1=fileName.Length -start1;string downloadName=fileName.Substring (start1,end1);// Create connectionOleDbConnection dbConn = new OleDbConnection(GetConnectionString());//改用command.executenonquery来存储图片.nFileID=Guid.NewGuid().ToString ();dbConn.Open();try{OleDbCommand cmd1=new OleDbCommand ();cmd1.CommandText ="insert into Files (fileid,filename,filesize,contentType,FileData,DownloadName)values('" nFileID "','" strName "'," Buffer.Length ",'" strType "',@fileData,'" downloadName "')";cmd1.Parameters.Add("@fileData",OleDbType.Binary);cmd1.Parameters["@fileData"].Value =Buffer;cmd1.Connection =dbConn;cmd1.ExecuteNonQuery ();}catch(OleDbException ee){throw ee;}finally{// Close connectiondbConn.Close();}// Return FileIDreturn nFileID;}
标签: