死亡历险,DELPHI以TByteDynArray(Bytes)方式传递图片到JAVA的WEBSERVICE保存
2016-04-22 14:25
579 查看
DELPHI以TByteDynArray(Bytes)方式传递图片到JAVA的WEBSERVICE保存
procedure TForm1.btn17Click(Sender: TObject);
var
strm : TMemoryStream;
AFileData: TByteDynArray;
fsize:Integer;
begin
strm := TMemoryStream.Create;
img1.Picture.Graphic.SaveToStream(strm);//把图片转化成内存流
strm.Position:=0;//切记,操作图片前一定要这句,否则错误
//把内存流转化成TByteDynArray
fsize:=strm.Size;
SetLength(AFileData,fsize);
strm.Read(AFileData[0],fsize);
addResult:=ServiceHello1.addUser_Byte(edt4.Text, AFileData);
if (addResult='ok') then
begin
ShowMessage('添加成功');
end;
end;
这是JAVA的WEBSERVICE接口
function addUser_Byte(const arg0: WideString; const arg1: TByteDynArray): WideString; stdcall;
这是JAVA的WEBSERVICE函数
ServiceHello.java
public String addUser_Byte(String sname, byte[] bytes) {
String result = "";
try {
login getUserList00=new login();
result = getUserList00.addUser_Byte(conn, sname, bytes);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
login.java
public String addUser_Byte(Connection conn, String sname, byte[] bytes) throws SQLException, IOException {
String sql = "";
String result = "";
byte[] blob1 = null;
blob1 = bytes;
result = new sun.misc.BASE64Encoder().encode(blob1);
System.out.println(result);
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)values('"+sname+"',sysdate,?) ";
pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
pstmt.setBytes(1, blob1);
rs = pstmt.executeQuery(); //执行查询,返回结果集
if (rs.next()) {
result = "ok";
}
}
}
return result;
}
procedure TForm1.btn17Click(Sender: TObject);
var
strm : TMemoryStream;
AFileData: TByteDynArray;
fsize:Integer;
begin
strm := TMemoryStream.Create;
img1.Picture.Graphic.SaveToStream(strm);//把图片转化成内存流
strm.Position:=0;//切记,操作图片前一定要这句,否则错误
//把内存流转化成TByteDynArray
fsize:=strm.Size;
SetLength(AFileData,fsize);
strm.Read(AFileData[0],fsize);
addResult:=ServiceHello1.addUser_Byte(edt4.Text, AFileData);
if (addResult='ok') then
begin
ShowMessage('添加成功');
end;
end;
这是JAVA的WEBSERVICE接口
function addUser_Byte(const arg0: WideString; const arg1: TByteDynArray): WideString; stdcall;
这是JAVA的WEBSERVICE函数
ServiceHello.java
public String addUser_Byte(String sname, byte[] bytes) {
String result = "";
try {
login getUserList00=new login();
result = getUserList00.addUser_Byte(conn, sname, bytes);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
login.java
public String addUser_Byte(Connection conn, String sname, byte[] bytes) throws SQLException, IOException {
String sql = "";
String result = "";
byte[] blob1 = null;
blob1 = bytes;
result = new sun.misc.BASE64Encoder().encode(blob1);
System.out.println(result);
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)values('"+sname+"',sysdate,?) ";
pstmt = conn.prepareStatement(sql); //根据sql创建PreparedStatement
pstmt.setBytes(1, blob1);
rs = pstmt.executeQuery(); //执行查询,返回结果集
if (rs.next()) {
result = "ok";
}
}
}
return result;
}
相关文章推荐
- RAD Studio, Delphi and C++Builder 10.1 Berlin 新版本功能介绍 - 首场在线教学
- Delphi快捷键
- delphi学习_安装
- delphi TClientDataSet 保存到XML
- delphi 编码速度提升技能
- [Delphi] Search path vs Library Path vs Browsing Path
- delphi 接口Interface
- DELPHI MAKEWORD的用法
- delphi absolute 应用实例
- Delphi常见错误及解决方法
- Delphi 调用C#编写的WebService 参数为Null解决方法
- DELPHI中的消息处理机制
- Delphi 中 函数参数中的 const 修饰符的本质以及注意事项
- DELPHI用const来提高应用程序在多核多线程下的性能
- delphi编写分页显示的模板
- Delphi 关闭MDI子窗口
- DELPHI 参数前缀的使用
- Delphi - 字符串 详解
- 分析函数调用堆栈的原理和Delphi实现
- Delphi关键字详解(转载自“万一”)