关于java后台处理base64数据

/**
* @date : 2017-11-06 15:19
* @description : 头像上传
* @param : Member(成员对象)
* */
@RequestMapping("/uploadHeader")
public @ResponseBody Map uploadHeader(@RequestParam String base64Data){
Map map = new HashMap();
String basePath = request.getRealPath("/");   //获取项目根目录绝对路径(xxx/Rainbow/)
       try{  
           String dataPrix = "";
           String data = "";


           
           if(base64Data == null || "".equals(base64Data)){
               throw new Exception("上传失败,上传图片数据为空");
           }else{
               String [] d = base64Data.split("base64,");
               if(d != null && d.length == 2){
                   dataPrix = d[0];
                   data = d[1];
               }else{
                   throw new Exception("上传失败,数据不合法");
               }
           }


           
           String suffix = "";
           if("data:image/jpeg;".equalsIgnoreCase(dataPrix)){//data:image/jpeg;base64,base64编码的jpeg图片数据
               suffix = ".jpg";
           } else if("data:image/x-icon;".equalsIgnoreCase(dataPrix)){//data:image/x-icon;base64,base64编码的icon图片数据
               suffix = ".ico";
           } else if("data:image/gif;".equalsIgnoreCase(dataPrix)){//data:image/gif;base64,base64编码的gif图片数据
               suffix = ".gif";
           } else if("data:image/png;".equalsIgnoreCase(dataPrix)){//data:image/png;base64,base64编码的png图片数据
               suffix = ".png";
           }else{
               throw new Exception("上传图片格式不合法");
           }
           //重命名文件名称
           String tempFileName = basePath + "upload\\header\\"+String.valueOf(Calendar.getInstance().getTimeInMillis()) + suffix;
           
           //因为BASE64Decoder的jar问题,此处使用spring框架提供的工具包
           Base64Decoder decoder = new Base64Decoder();
           byte[] bs =  decoder.decode(data.getBytes(),0, data.length()); //将base64转换成字节流
           try{
               //使用apache提供的工具类操作流
               FileUtils.writeByteArrayToFile(new File(tempFileName), bs);  
           }catch(Exception ee){
               throw new Exception("上传失败,写入文件失败,"+ee.getMessage());
           }
           map.put("header_name",tempFileName); //设置重命名文件名 显示在表单中,再提交至后台
       }catch (Exception e) {  
         map.put("result","false"); //设置上传图片结果(成功或者失败)
         return map;
       }  
       map.put("result", "true");
return map;

}



在这里没有使用Base64Util这个类 是因为我的当前jdk版本为1.7  想要使用这个需要把你的jdk升级为1.8的版本  所以这里使用了mysql jdbc包自带的base64处理类  Base64Decoder  将前台穿送过来的base64(通过canvas)字符串转成二节流文件 进行上传图片   具体代码如上

你可能感兴趣的:(spring-mvc,java,Spring)