騎豬闖天下

          J2ME隨筆,記錄成長的腳步

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          [J2ME]手機文件上傳--CMA端

          CMA端接收圖片的思想和proxy中相似,接收字節數組,然后截取轉換成圖片及所需數據,大致代碼如下:

            1 package com.freelynet.meta.webapp.actions.kjava;
            2 
            3 import java.io.BufferedInputStream;
            4 import java.io.File;
            5 import java.io.FileNotFoundException;
            6 import java.io.FileOutputStream;
            7 import java.io.IOException;
            8 import java.io.UnsupportedEncodingException;
            9 import java.text.ParseException;
           10 import java.text.SimpleDateFormat;
           11 import java.text.Format;
           12 import java.text.DecimalFormat;
           13 import java.util.ArrayList;
           14 import java.util.Date;
           15 import java.util.List;
           16 import java.util.Map;
           17 import java.util.regex.Matcher;
           18 import java.util.regex.Pattern;
           19 
           20 import javax.servlet.http.HttpServletRequest;
           21 
           22 import org.apache.struts2.ServletActionContext;
           23 import org.apache.struts2.config.ParentPackage;
           24 import org.apache.struts2.config.Result;
           25 import org.apache.struts2.config.Results;
           26 import org.apache.struts2.dispatcher.ServletDispatcherResult;
           27 
           28 import com.freelynet.bboss.soap.bean.SoapDataContainer;
           29 import com.freelynet.bboss.soap.bean.SoapUserInfo;
           30 import com.freelynet.bboss.soap.service.IGroupCustomerService;
           31 import com.freelynet.meta.model.Department;
           32 import com.freelynet.meta.model.SysUser;
           33 import com.freelynet.meta.service.ApplicationException;
           34 import com.freelynet.meta.service.BizService;
           35 import com.freelynet.meta.service.BizServiceBean;
           36 import com.freelynet.meta.service.BossService;
           37 import com.freelynet.meta.service.UserManager;
           38 import com.freelynet.meta.util.BossQuery;
           39 import com.freelynet.meta.webapp.action.BaseAction;
           40 import com.freelynet.meta.webapp.actions.admin.BaseAdminAction;
           41 import com.opensymphony.xwork2.ActionContext;
           42 import com.freelynet.sxcma.interfaces.helper.CmaHelper;
           43 
           44 /**
           45  * @author moderndai
           46  * @company fancy    2008-12-15
           47  */
           48 @ParentPackage("meta-package")
           49 @Results( {
           50         @Result(name = "home", type = ServletDispatcherResult.class, value = "/kjava/home.jsp"),
           51         @Result(name = "getStaffOrderList-home", type = ServletDispatcherResult.class, value = "/kjava/stafforder.home.jsp"),
           52         @Result(name = "getQueryOrderApply-input", type = ServletDispatcherResult.class, value = "/kjava/stafforder.query.input.jsp"),
           53         @Result(name = "getQueryOrderApply-success", type = ServletDispatcherResult.class, value = "/kjava/stafforder.query.success.jsp"),
           54         @Result(name = "getAddOrderApply-input", type = ServletDispatcherResult.class, value = "/kjava/stafforder.add.input.jsp"),
           55         @Result(name = "getAddOrderApply-success", type = ServletDispatcherResult.class, value = "/kjava/stafforder.add.success.jsp")        
           56         })        
           57 public class FileAction extends BaseKjavaAction {
           58 
           59     public String home(){
           60         return "home";        
           61     }
           62     
           63     public String getStaffOrderList(){
           64         return "getStaffOrderList-home";
           65     }
           66     
           67     /**
           68      * 把收到的數據轉換成字節數組
           69      * @param request
           70      * @return
           71      */
           72     private byte[] getRequestData(HttpServletRequest request) {
           73         try {
           74             BufferedInputStream in = new BufferedInputStream(request
           75                     .getInputStream());
           76             byte[] buffer = new byte[1024 * 1024 + 3]; // 請求內容最大200K
           77             int pos = 0;
           78             int total = 0;
           79             // 獲取請求頭長度
           80             while (true) {
           81                 int n = in.read();
           82                 if (n == -1) {
           83                     break;
           84                 }
           85                 buffer[pos] = (byte) n;
           86                 ++pos;
           87                 ++total;
           88             }
           89             if (total > 0) {
           90                 byte[] data = new byte[total];
           91                 for (int i = 0; i < data.length; ++i) {
           92                     data[i] = buffer[i];
           93                 }
           94                 return data;
           95             } else {
           96                 return null;
           97             }
           98         } catch (Exception e) {
           99             //log.error("error occurs when fetching the request data!", e);
          100             System.out.println("error occurs when fetching the request data!" + e);
          101             return null;
          102         }
          103     }
          104     /**
          105      * 把收到的字節數組中的參數和圖片分開
          106      */
          107     public String execute() throws Exception {
          108         
          109         byte[] reqData = getRequestData(ServletActionContext.getRequest());
          110 
          111         String urlParameter = "";//url里的參數
          112         byte[] picData = null//圖片字節數組
          113         
          114         byte[] urlParameterData = null//字節數組形式的url參數
          115         byte[] mark = new byte[2]; //標志位字節數組
          116         
          117         //把標志位 “&#” 的字節數組位置找到,還原成字符串,以此分開url數組和圖片數組
          118         for (int i=0; i< reqData.length; i++){
          119             System.arraycopy(reqData, i, mark, 01);
          120             String word = new String(mark, "UTF-8");
          121             
          122             //問號出現的位置
          123             if (word.trim().equals("&")){
          124                 //再判斷后面是不是#號
          125                 System.arraycopy(reqData, i+1, mark, 01);
          126                 String wordNext = new String(mark, "UTF-8");
          127                 if (wordNext.trim().equals("#")){
          128                     //分開url數組和圖片數組
          129                     urlParameterData = new byte[i];
          130                     picData = new byte[reqData.length - (i+2)];
          131                     
          132                     System.arraycopy(reqData, 0, urlParameterData, 0, i);//url字節數組
          133                     System.arraycopy(reqData, (i+2), picData, 0, reqData.length - (i+2) );//圖片字節數組
          134                     
          135                     urlParameter = new String(urlParameterData, "UTF-8");
          136                     urlParameter = "&"+ urlParameter + "&";
          137                     //System.out.println(urlParameter);
          138                     break;    
          139                 }
          140             }
          141         }
          142         
          143         if (picData != null){
          144             File file = new File("E:\\cmaPic.png");
          145             FileOutputStream fos = new FileOutputStream(file);
          146             fos.write(picData);
          147             fos.flush();
          148             fos.close();
          149         }
          150         
          151         StaffOrderAction stafforder=new StaffOrderAction();
          152         stafforder.getAddOrderApply(urlParameter,picData);
          153         return "";
          154     }
          155 }
          156 

          posted on 2009-02-11 16:34 騎豬闖天下 閱讀(314) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 闽侯县| 洛隆县| 尤溪县| 胶州市| 本溪| 阳谷县| 香格里拉县| 阿克苏市| 诸城市| 凤凰县| 湘潭县| 诏安县| 凉城县| 天柱县| 上蔡县| 信丰县| 舟山市| 巴林右旗| 习水县| 揭东县| 吉林省| 华容县| 乌海市| 广东省| 高雄市| 安徽省| 神木县| 阜平县| 芜湖市| 东至县| 开江县| 甘肃省| 和政县| 微博| 旅游| 房产| 巴青县| 德阳市| 兰考县| 达拉特旗| 汾阳市|