国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 通過Base64上傳圖片到服務器實現(xiàn)實例

2019-10-23 18:29:11
字體:
來源:轉載
供稿:網友

Android 通過Base64上傳圖片到服務器

之前做上傳圖片是采用HttpServlet上傳,不過用了一下Base64上傳圖片后,感覺比HttpServlet方便很多,大家也可以跟著嘗試一下。

前臺圖片處理:(傳Bitmap對象即可)

/**  * 通過Base32將Bitmap轉換成Base64字符串  * @param bit  * @return  */ public String Bitmap2StrByBase64(Bitmap bit){   ByteArrayOutputStream bos=new ByteArrayOutputStream();   bit.compress(CompressFormat.JPEG, 40, bos);//參數100表示不壓縮   byte[] bytes=bos.toByteArray();   return Base64.encodeToString(bytes, Base64.DEFAULT); } 

 前臺發(fā)送數據:(調用setImgByStr()方法,第一個參數imgStr 為Bitmap轉成Base64的字符串,第二個參數imgName為圖片的名字,包含后綴名.jpg)

public static String host = "http://192.168.1.166:8080/ImageServer/";  public static String getContent(String url) throws Exception {    StringBuilder sb = new StringBuilder();    HttpClient client = new DefaultHttpClient();   HttpParams httpParams = client.getParams();   // 設置網絡超時參數   HttpConnectionParams.setConnectionTimeout(httpParams, 3000);    HttpConnectionParams.setSoTimeout(httpParams, 5000);   HttpResponse response = client.execute(new HttpGet(url));   HttpEntity entity = response.getEntity();   if (entity != null) {     BufferedReader reader = new BufferedReader(new InputStreamReader(         entity.getContent(), "UTF-8"), 8192);      String line = null;     while ((line = reader.readLine()) != null) {       sb.append(line + "/n");     }     reader.close();    }    return sb.toString(); } public static HttpResponse post(Map<String, Object> params, String url) {    HttpClient client = new DefaultHttpClient();   HttpPost httpPost = new HttpPost(url);   httpPost.addHeader("charset", HTTP.UTF_8);   httpPost.setHeader("Content-Type",       "application/x-www-form-urlencoded; charset=utf-8");   HttpResponse response = null;   if (params != null && params.size() > 0) {     List<NameValuePair> nameValuepairs = new ArrayList<NameValuePair>();     for (String key : params.keySet()) {       nameValuepairs.add(new BasicNameValuePair(key, (String) params           .get(key)));     }     try {       httpPost.setEntity(new UrlEncodedFormEntity(nameValuepairs,           HTTP.UTF_8));       response = client.execute(httpPost);     } catch (UnsupportedEncodingException e) {       e.printStackTrace();     } catch (ClientProtocolException e) {       e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     } catch (RuntimeException e) {       e.printStackTrace();     }   } else {     try {       response = client.execute(httpPost);     } catch (ClientProtocolException e) {       e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     }   }    return response;  } public static Object getValues(Map<String, Object> params, String url) {   String token = "";   HttpResponse response = post(params, url);   if (response != null) {     try {       token = EntityUtils.toString(response.getEntity());       response.removeHeaders("operator");     } catch (ParseException e) {       e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     }   }   return token; } public static Object setImgByStr(String imgStr,String imgName){   String url = host+"channel-uploadImage.action";   Map<String,Object> params = new HashMap<String, Object>();   params.put("imgStr", imgStr);   params.put("imgName", imgName);   return getValues(params, url); } 

 后臺接收數據:

public void uploadPhoto() {   //獲取存儲路徑   HttpServletRequest request = ServletActionContext.getRequest();   String path = ServletActionContext.getServletContext().getRealPath("/")+"upload";   File file = new File(path);   if(!file.exists()){     file.mkdir();   }   String imgPath = path + request.getParameter("imgName");   String imgStr = request.getParameter("imgStr");   boolean flag = string2Image(imgStr, imgPath);   JacksonUtil.responseJSON(response, flag); } 

 后臺圖片處理:

/**  * 通過BASE64Decoder解碼,并生成圖片  * @param imgStr 解碼后的string  */ public boolean string2Image(String imgStr, String imgFilePath) {   // 對字節(jié)數組字符串進行Base64解碼并生成圖片   if (imgStr == null)     return false;   try {     // Base64解碼     byte[] b = new BASE64Decoder().decodeBuffer(imgStr);     for (int i = 0; i < b.length; ++i) {       if (b[i] < 0) {         // 調整異常數據         b[i] += 256;       }     }     // 生成Jpeg圖片     OutputStream out = new FileOutputStream(imgFilePath);     out.write(b);     out.flush();     out.close();     return true;   } catch (Exception e) {     return false;   } }   

OK ! 如果成功上傳前端會接收到true ,反之失敗false。希望對大家有所幫助!


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 云梦县| 中西区| 临清市| 杨浦区| 新巴尔虎右旗| 吉首市| 凤山市| 得荣县| 鞍山市| 溆浦县| 吉安县| 罗江县| 英超| 马公市| 德令哈市| 河南省| 新郑市| 广州市| 巴林左旗| 肃宁县| 嘉峪关市| 满洲里市| 儋州市| 南投县| 高淳县| 内黄县| 天全县| 鄂伦春自治旗| 同仁县| 育儿| 基隆市| 芜湖市| 邛崃市| 墨玉县| 民乐县| 九龙坡区| 安溪县| 新营市| 河津市| 鹤壁市| 拉孜县|