死亡历险,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;
    }
0 0
原创粉丝点击