app接口上传图片(通过转码为Base64格式字符串上传)

app开发中接口有时会涉及到图片上传,代码如下

接受参数

 			//上传
 			String imgName = this.getRequestBase64Img("headImg");

方法

    /**
     * 上传图片(前台为Base64格式)
     * @param fileName 上传图片的属性名
     * @return
     * @throws Exception
     */
    public String getRequestBase64Img(String fileName) throws Exception{
    	return getRequestBase64File(fileName, Constant.SJYS_IMG);//ROOT_PATH + "/SJYS_IMG/"
    }

具体方法

    /**
     * 上传文件(前台为Base64格式)
     * @param fileName 上传文件的名字(前台的属性名称)
     * @param filePath 文件保存的目标路径
     * @return
     * @throws Exception
     */
    public String getRequestBase64File(String fileName, String filePath) throws Exception{
    	//得到前台传递过来的Base64格式的字符串
    	String fileStr = this.getRequest().getParamValue(fileName);
    	if (fileStr == null){
    		return null;
    	}
    	
    	if(filePath == null || "".equals(filePath)){
			filePath = Constant.XLS_TEMP;//ROOT_PATH + "/uploadTemplates/";
		}
    	
    	//前台生成base64时,是以   ABCDEFWWFE.jpg 这种格式传过来的 .jpg是文件的后缀名
		String suffix = fileStr.substring(fileStr.lastIndexOf("."));  //后缀名
		fileStr = fileStr.substring(0,fileStr.lastIndexOf(".")); //文件的真正base64内容
		
		//产生的文件名称
		String name = getRandomFileName()+suffix;
		
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			// Base64解码
			byte[] b = decoder.decodeBuffer(fileStr);
			for (int i = 0; i < b.length; ++i) {
				if (b[i] < 0) {// 调整异常数据
					b[i] += 256;
				}
			}
			// 生成文件
			OutputStream out = new FileOutputStream(filePath+name);
			out.write(b);
			out.flush();
			out.close();
			return name;
		} catch (Exception e) {
			return null;
		}
	}
    /**
	 * 生成随机名字
	 */
	public String getRandomFileName() {
		Random r = new Random();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmssSSS");
		StringBuffer sb = new StringBuffer();
		sb.append(r.nextInt(100));
		sb.append(r.nextInt(100));
		sb.append("_");
		sb.append(sdf.format(new Date()));
		sb.append("_");
		sb.append(r.nextInt(100));
		sb.append(r.nextInt(100));
		return sb.toString();
	}



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值