死亡历险,Delphi以Json方式一次传递多张图片通过WebService到Java保存
来源:互联网 发布:淘宝代理买吃的要证吗 编辑:程序博客网 时间:2024/05/01 21:44
Unit1.pas
procedure TForm1.btn20Click(Sender: TObject);
var
addResult:string;
strm : TMemoryStream;
i:Integer;
ms:TMemoryStream;
ss:TStringStream;
s:string;
jfields,jitems,jo:ISuperObject;
begin
jitems:=SA([]);
jo:=SO();
if img1.Picture.Graphic<>nil then
begin
strm := TMemoryStream.Create;
img1.Picture.Graphic.SaveToStream(strm);
ss := TStringStream.Create('');
strm.Position:=0;//移动指针到最开头的位置
EncodeStream(strm,ss);//将内存流编码为base64字符流
s:=ss.DataString;
jfields:=SO();
jfields.S['image']:=s;
jitems.AsArray.Add(jfields);
strm.Free;
ss.Free;
end;
if img2.Picture.Graphic<>nil then
begin
strm := TMemoryStream.Create;
img2.Picture.Graphic.SaveToStream(strm);
ss := TStringStream.Create('');
strm.Position:=0;
EncodeStream(strm,ss);//将内存流编码为base64字符流
s:=ss.DataString;
jfields:=SO();
jfields.S['image']:=s;
jitems.AsArray.Add(jfields);
strm.Free;
ss.Free;
end;
if img3.Picture.Graphic<>nil then
begin
strm := TMemoryStream.Create;
img3.Picture.Graphic.SaveToStream(strm);
ss := TStringStream.Create('');
strm.Position:=0;
EncodeStream(strm,ss);//将内存流编码为base64字符流
s:=ss.DataString;
jfields:=SO();
jfields.S['image']:=s;
jitems.AsArray.Add(jfields);
strm.Free;
ss.Free;
end;
jo.O['records']:=jitems;
mmo1.Text:=jitems.AsString;//jo.AsString;
//exit;
//addResult:=ServiceHello1.addUser_Json(edt4.Text, jo.AsString);
addResult:=ServiceHello1.addUser_Json(edt4.Text, jitems.AsString);
if (addResult='ok') then
begin
edt4.Text:='';
btn6Click(Sender);
ShowMessage('添加成功');
end
else if (addResult='empty') then
begin
ShowMessage('请输入姓名');
end
else if (addResult='repeat') then
begin
ShowMessage('已经有此姓名');
end;
end;
---------------------------------------------
ServiceHello.java
public String addUser_Json(String sname, String json) {
String result = "";
try {
login getUserList00=new login();
//System.out.println(json);
result = getUserList00.addUser_Json(conn, sname, json);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
login.java
package com.hyan.login;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import com.hyan.db.*;
import com.hyan.service.ServiceHello;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import javax.xml.ws.Endpoint;
//要先导入json-lib-2.4-jdk15.jar包
//放到WebRoot-WEB-INF-lib下
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.Date;
import java.text.SimpleDateFormat;
import oracle.sql.BLOB;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
去掉换行符,空格什么的
public static String replaceBlank(String str) {
String dest = "";
if (str!=null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
public String addUser_Json(Connection conn, String sname, String json) throws SQLException, IOException {
String sql = "";
String result = "";
String sJson="";
String sJson2="";
sJson2=replaceBlank(json);
//sJson2 = sJson2.replace("\"", "\\\"");
JSONArray jsonArray = JSONArray.fromObject(sJson2);
//System.out.println(jsonArray.getJSONObject(0).get("image").toString());
int iSize = jsonArray.size();
System.out.println("Size:" + iSize);
//for (int i = 0; i < iSize; i++) {
//JSONObject jsonObj = jsonArray.getJSONObject(i);
//System.out.println("[" + i + "]姓名=" + jsonObj.get("image"));
//}
byte[] blob1 = null;
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
blob1 = decoder.decodeBuffer(jsonArray.getJSONObject(0).get("image").toString());
//System.out.println(jsonArray.getJSONObject(0).get("image").toString());
byte[] blob2 = null;
sun.misc.BASE64Decoder decoder2 = new sun.misc.BASE64Decoder();
blob2 = decoder.decodeBuffer(jsonArray.getJSONObject(1).get("image").toString());
byte[] blob3 = null;
sun.misc.BASE64Decoder decoder3 = new sun.misc.BASE64Decoder();
blob3 = decoder.decodeBuffer(jsonArray.getJSONObject(2).get("image").toString());
sql = "select * from D_J_TABLE1 where name='"+sname+"' ";//定义SQL语句
pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
rs = pstmt.executeQuery(); //执行查询,返回结果集
if (rs.next()) {
result = "repeat";
}
else
{
Date time = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current = sdf.format(time);
if("".equals(sname) || sname == null)
{
result = "empty";
}
else
{
sql = "insert into D_J_TABLE1(name,addtime,image1,image2,image3)values('"+sname+"',sysdate,?,?,?) ";
pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
pstmt.setBytes(1, blob1);
pstmt.setBytes(2, blob2);
pstmt.setBytes(3, blob3);
rs = pstmt.executeQuery(); //执行查询,返回结果集
if (rs.next()) {
result = "ok";
}
}
}
return result;
}
procedure TForm1.btn20Click(Sender: TObject);
var
addResult:string;
strm : TMemoryStream;
i:Integer;
ms:TMemoryStream;
ss:TStringStream;
s:string;
jfields,jitems,jo:ISuperObject;
begin
jitems:=SA([]);
jo:=SO();
if img1.Picture.Graphic<>nil then
begin
strm := TMemoryStream.Create;
img1.Picture.Graphic.SaveToStream(strm);
ss := TStringStream.Create('');
strm.Position:=0;//移动指针到最开头的位置
EncodeStream(strm,ss);//将内存流编码为base64字符流
s:=ss.DataString;
jfields:=SO();
jfields.S['image']:=s;
jitems.AsArray.Add(jfields);
strm.Free;
ss.Free;
end;
if img2.Picture.Graphic<>nil then
begin
strm := TMemoryStream.Create;
img2.Picture.Graphic.SaveToStream(strm);
ss := TStringStream.Create('');
strm.Position:=0;
EncodeStream(strm,ss);//将内存流编码为base64字符流
s:=ss.DataString;
jfields:=SO();
jfields.S['image']:=s;
jitems.AsArray.Add(jfields);
strm.Free;
ss.Free;
end;
if img3.Picture.Graphic<>nil then
begin
strm := TMemoryStream.Create;
img3.Picture.Graphic.SaveToStream(strm);
ss := TStringStream.Create('');
strm.Position:=0;
EncodeStream(strm,ss);//将内存流编码为base64字符流
s:=ss.DataString;
jfields:=SO();
jfields.S['image']:=s;
jitems.AsArray.Add(jfields);
strm.Free;
ss.Free;
end;
jo.O['records']:=jitems;
mmo1.Text:=jitems.AsString;//jo.AsString;
//exit;
//addResult:=ServiceHello1.addUser_Json(edt4.Text, jo.AsString);
addResult:=ServiceHello1.addUser_Json(edt4.Text, jitems.AsString);
if (addResult='ok') then
begin
edt4.Text:='';
btn6Click(Sender);
ShowMessage('添加成功');
end
else if (addResult='empty') then
begin
ShowMessage('请输入姓名');
end
else if (addResult='repeat') then
begin
ShowMessage('已经有此姓名');
end;
end;
---------------------------------------------
ServiceHello.java
public String addUser_Json(String sname, String json) {
String result = "";
try {
login getUserList00=new login();
//System.out.println(json);
result = getUserList00.addUser_Json(conn, sname, json);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
login.java
package com.hyan.login;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import com.hyan.db.*;
import com.hyan.service.ServiceHello;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
import javax.xml.ws.Endpoint;
//要先导入json-lib-2.4-jdk15.jar包
//放到WebRoot-WEB-INF-lib下
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.Date;
import java.text.SimpleDateFormat;
import oracle.sql.BLOB;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
...
去掉换行符,空格什么的
public static String replaceBlank(String str) {
String dest = "";
if (str!=null) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
dest = m.replaceAll("");
}
return dest;
}
public String addUser_Json(Connection conn, String sname, String json) throws SQLException, IOException {
String sql = "";
String result = "";
String sJson="";
String sJson2="";
sJson2=replaceBlank(json);
//sJson2 = sJson2.replace("\"", "\\\"");
JSONArray jsonArray = JSONArray.fromObject(sJson2);
//System.out.println(jsonArray.getJSONObject(0).get("image").toString());
int iSize = jsonArray.size();
System.out.println("Size:" + iSize);
//for (int i = 0; i < iSize; i++) {
//JSONObject jsonObj = jsonArray.getJSONObject(i);
//System.out.println("[" + i + "]姓名=" + jsonObj.get("image"));
//}
byte[] blob1 = null;
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
blob1 = decoder.decodeBuffer(jsonArray.getJSONObject(0).get("image").toString());
//System.out.println(jsonArray.getJSONObject(0).get("image").toString());
byte[] blob2 = null;
sun.misc.BASE64Decoder decoder2 = new sun.misc.BASE64Decoder();
blob2 = decoder.decodeBuffer(jsonArray.getJSONObject(1).get("image").toString());
byte[] blob3 = null;
sun.misc.BASE64Decoder decoder3 = new sun.misc.BASE64Decoder();
blob3 = decoder.decodeBuffer(jsonArray.getJSONObject(2).get("image").toString());
sql = "select * from D_J_TABLE1 where name='"+sname+"' ";//定义SQL语句
pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
rs = pstmt.executeQuery(); //执行查询,返回结果集
if (rs.next()) {
result = "repeat";
}
else
{
Date time = new Date(System.currentTimeMillis());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current = sdf.format(time);
if("".equals(sname) || sname == null)
{
result = "empty";
}
else
{
sql = "insert into D_J_TABLE1(name,addtime,image1,image2,image3)values('"+sname+"',sysdate,?,?,?) ";
pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
pstmt.setBytes(1, blob1);
pstmt.setBytes(2, blob2);
pstmt.setBytes(3, blob3);
rs = pstmt.executeQuery(); //执行查询,返回结果集
if (rs.next()) {
result = "ok";
}
}
}
return result;
}
0 0
- 死亡历险,Delphi以Json方式一次传递多张图片通过WebService到Java保存
- 死亡历险,DELPHI以TByteDynArray(Bytes)方式传递图片到JAVA的WEBSERVICE保存
- 死亡历险,DELPHI以string方式传递图片到JAVA的WEBSERVICE保存
- Java Webservice 取数据库图片,图片以数组方式传递到Delphi前台显示
- 死亡历险,翻开新的一篇之Delphi 连接 JAVA WebService,并实现查找,添加,修改,删除等功能
- 【转】[Delphi]使用TMemoryStream保存多张图片到文件,并读取
- Java 以post请求方式通过json格式调用Webservice接口
- Android 通过webservice上传多张图片到指定服务器上面
- 死亡历险,Java做的安卓调用.net Webservice进行修改密码
- iOS 保存多张bundle里面的图片到相册
- 一次上传多张图片
- Flex上传图片,将图片保存以二进制流的方式保存到数据库。
- 通过Google和Flickr图片源获取图片并以多线程方式保存图片
- 死亡历险,asp.net做的Webservice,Java做的安卓调用Webservice进行登录验证
- Silverlight中通过调用WebService来显示数据库中以流形式保存的图片
- java导出多张图片到Excel
- java POI导出多张图片到表格(占位符方式)
- 以自己的电脑作为服务器,Android端通过JSON来传递数据到后台
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 初始化PopupWindow Caused by: android.view.WindowManager$BadTokenException:
- Oracle游标使用全解
- thinkphp放到正式环境出现错误
- 对象数组与指针+this指针
- 死亡历险,Delphi以Json方式一次传递多张图片通过WebService到Java保存
- Java enum的用法详解
- javascript 从ueditor中学到的闭包知识
- [BZOJ1834][ZJOI2010]network 网络扩容(isap+费用流)
- Windows Server 2008 R2上部署ASP.NET MVC3.0应用网站程序
- 使用Powershell注销指定用户
- apt-get工作顺序
- Android View和ViewGroup事件分发机制源码分析
- cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法