App端通過Base64多張圖片上傳到伺服器,並存入資料庫資料

來源:互聯網
上載者:User

標籤:app 通過base64多張圖片上傳到伺服器

import java.awt.image.BufferedImage;

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;


import javax.annotation.Resource;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletRequest;

import com.shangyu.action.AppBaseController;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import com.shangyu.core.utils.PropertyUtils;

import com.shangyu.entity.dsz.AppSession;

import com.shangyu.service.dsz.PublicImageService;

import com.shangyu.service.dsz.WorksummaryService;

import com.shangyu.entity.dsz.Worksummary;

import com.shangyu.web.DszUtils;

import sun.misc.BASE64Decoder;


@Controller

@RequestMapping("/app/worksummary")

public class AppWorksummaryController extends AppBaseController{


//shangyu.properties設定檔圖片路徑:

//windows存放路徑------->file.path=c:/nginx/img/dsz/

//windows讀取路徑------->imgUrl=http\://115.35.220.220\:8081/dsz/

//linux存放路徑--------->file.path=/usr/local/file_root/dsz/

//linux讀取路徑--------->imgUrl=http\://182.95.5.128\:8081/dsz/


/**

* @param formFile ---> android或ios 經過base64加密後傳遞給背景圖片拼接字串

* @param sessionId

* @param request

* @return

*/

@RequestMapping("/save.json")

@ResponseBody

public Map<String, Object> save(String sessionId, String formFile, HttpServletRequest request) {

Map<String, Object> rlt = new HashMap<String, Object>();

Map<String, Object> param = new HashMap<String, Object>();

try {

AppSession session = validateSession(sessionId);

// app未登陸

if (session == null) {

rlt.put("retcode", "-1");

rlt.put("message", "未登陸");

return rlt;

}

Worksummary entity = new Worksummary(session.getSupplierId(), session.getUserId());

worksummaryService.save(entity);

param.put("bizid", entity.getUid());//日誌id

param.put("biztype", 2);//圖片庫類型--->2代表日誌類型

//上傳圖片

if(formFile != null){

uploadImgs(param, formFile);

}

rlt.put("retcode", "0");

rlt.put("message", "添加成功");

System.out.println(param.get("code"));

return rlt;

} catch (Exception e) {

rlt.put("retcode", "2");

rlt.put("message", "系統異常," + e.getMessage());

return rlt;

}

}


/**

* @param formFile 

   * @Title: uploadImgs

   * @Description: 上傳圖片

   * @param  map

   * @param  formFile

   * @param  bizid

   * @param  biztype

   * @return void    傳回型別

   * @throws

*/


public void uploadImgs(Map<String, Object> param, String formFile){


try {

//App日誌編輯頁面時根據該日誌id及圖片類型刪除該日誌對應的所有原始圖片

List<PublicImage> imglist = publicImageService.findByMap(param);

if(imglist.size() > 0){

for (int j = 0; j < imglist.size(); j++) {

publicImageService.delete(imglist.get(j).getBizid());

}

}

//拆分多張圖片進行遍曆

String[]  list=formFile.split(",");

for (int i = 0; i < list.length; i++) {

//讀取設定檔存放圖片的絕對路徑(上傳的圖片存放的位置即盤目錄)

String imgPath = PropertyUtils.getPropertyValue("shangyu.properties", "file.path")+"imgs/";

//建立存放圖片路徑(目錄)

File targetDir = new File(imgPath);

if(!targetDir.exists()){

targetDir.mkdirs();

}

//建立新的圖片名(及格式)

String filename = DszUtils.uuid() + ".jpg";

File newfile = new File(imgPath + filename);

BASE64Decoder decoder = new BASE64Decoder();

//通過Base64解密,將圖片資料解密成位元組數組

byte[] bytes = decoder.decodeBuffer(list[i]);//解密每張圖片

//構造位元組數組輸入資料流

ByteArrayInputStream bais = new ByteArrayInputStream(bytes);

//讀取輸入資料流的資料

BufferedImage bi = ImageIO.read(bais);

//將資料資訊寫進圖片檔案中

ImageIO.write(bi, "jpg", newfile);// 不管輸出什麼格式圖片,此處不需改動

bais.close();

//imgs目錄下的圖片名稱(圖片相對路徑)

String img = "imgs/"+ filename;

//向圖片庫添加該日誌提交的所有圖片(儲存圖片)

PublicImage entity = new PublicImage();

entity.setBiztype((Integer) (param.get("biztype")));//圖片類型

entity.setBizid((String) param.get("bizid"));//圖片庫關聯的日誌主鍵id

entity.setPath(img);//圖片相對路徑

entity.setImgname(filename);//圖片名稱

publicImageService.save(entity);

param.put("code", "success");

}

} catch (Exception e) {

e.printStackTrace();

param.put("code", "圖片上傳異常,"+e.getMessage());

}

}


}




案例分析:Android 通過Base64上傳圖片到伺服器

本文出自 “不凡人生——求知者” 部落格,謝絕轉載!

App端通過Base64多張圖片上傳到伺服器,並存入資料庫資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.