我最终想解决的问题是:在VFP中,想把123.JPG文件进行BASE64编码存入SQL SERVER 2005,然后JAVA在将其取出来,反编回来
但是我发现对同一个 123.JPG文件,VFP和JAVA都各种进行base64编码,生成的字符串长度不同,也不能进行相互反编码(体现为文件不能打开),查过一些资料,有提到VFP在进行BASE64编码过程中,对某个字符进行了个性化处理。
请问情况是否如此?我该怎么办才能解决问题?多谢
------解决方案--------------------
如果能够顺利地写入数据库,并读取出来的话。编码相关的问题,LZ需要去相应的板块问问。
------解决方案--------------------
VFP和JAVA难道不能转换成2进制么??这样就一致了吧
------解决方案--------------------
- SQL code
图片保存到数据库的方法http://topic.csdn.net/u/20081024/11/846e3e56-218b-4b07-b733-ee87dc2fe687.html?882064923图片保存到数据库的方法: public void imgToDB(string sql) { [email protected] //调用方法如:imgToDB("update UserPhoto set [email protected] where UserNo='" + temp + "'"); FileStream fs = File.OpenRead(t_photo.Text); byte[] imageb = new byte[fs.Length]; fs.Read(imageb, 0, imageb.Length); fs.Close(); SqlCommand com3 = new SqlCommand (sql,con); com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb; if (com3.Connection.State == ConnectionState.Closed) com3.Connection.Open(); try { com3.ExecuteNonQuery(); } catch { } finally { com3.Connection.Close(); } } 数据库中读出图片并显示在picturebox中:方法一:private void ShowImage(string sql) { //调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'"); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); byte[] b= (byte[])cmd.ExecuteScalar(); if (b.Length 〉 0) { MemoryStream stream = new MemoryStream(b, true); stream.Write(b, 0, b.Length); pictureBox1.Image = new Bitmap(stream); stream.Close(); } conn.Close(); }方法二:当在dg中选中某行时: private void dg_MouseUp(object sender, MouseEventArgs e) { //整行选择 if (e.Button == System.Windows.Forms.MouseButtons.Left) {//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片 //显示相片 object imgobj=dg[10, dg.CurrentRow.Index].Value; if (imgobj != null && !Convert.IsDBNull(imgobj)) { byte[] imgb = (byte[])imgobj; MemoryStream memStream = new MemoryStream(imgb); try { Bitmap myimge = new Bitmap(memStream); this.pictureBox1.Image = myimge; } catch { DB.msgbox("从数据库读取相片失败!"); } } else pictureBox1.Image = null; } }