栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

AliYun OSS 图片上传回调

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AliYun OSS 图片上传回调

  • pom.xml
        
		
			com.aliyun.oss
			aliyun-sdk-oss
			3.10.2
		
		
			com.aliyun
			aliyun-java-sdk-imageseg
			1.1.9
		
		
		
			org.springframework
			spring-test
			5.1.6.RELEASE
			compile
		

  • 获取前端上传参数返回给前端,
    callbackBody可自动自定义参数在回调接口接收
public static Map getUploadParams(String userId) {

        OSSClient client = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        try {
            long expireTime = 30;
            long expireEndTime = System.currentTimeMillis() + expireTime * 1000;
            Date expiration = new Date(expireEndTime);

            PolicyConditions policyConds = new PolicyConditions();
            policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);
            policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, FILE_DIR);
            String postPolicy = client.generatePostPolicy(expiration, policyConds);
            byte[] binaryData = postPolicy.getBytes(StandardCharsets.UTF_8);
            String encodedPolicy = BinaryUtil.toBase64String(binaryData);
            String postSignature = client.calculatePostSignature(postPolicy);
            Map respMap = new LinkedHashMap<>();
            respMap.put("accessid", ACCESS_KEY_ID);
            respMap.put("policy", encodedPolicy);
            respMap.put("signature", postSignature);
            respMap.put("dir", FILE_DIR);
            respMap.put("host", HOST);
            String name = UUIDGenerator.getUUID(8) + "_";
            respMap.put("name", name + TimeUtils.getCurrentTime() + ".png");
            respMap.put("expire", String.valueOf(expireEndTime / 1000));
            JSONObject jasonCallback = new JSONObject();
            jasonCallback.put("callbackUrl", CALLBACK_URL);
            Map map = new HashMap<>();
            map.put("userId", userId);
            map.put("fileUrl", FILE_DIR + name + TimeUtils.getCurrentTime() + ".png");
            jasonCallback.put("callbackBody", JSON.toJSONString(map));
            jasonCallback.put("callbackBodyType", "application/json");
            String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());
            respMap.put("callback", base64CallbackBody);
            System.out.println(JSON.toJSONString(respMap));
            return respMap;
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
            return null;
        }
    }
  • 回调接口 :返回给前端的参数写在这里
public JSONObject callBack(JSONObject jsonObject) {
        JSONObject result = new JSONObject();
        try {
            PortraitSplitLog log = new PortraitSplitLog();
            String request = jsonObject.toJSONString();
            System.out.println("=====callbackn" + request);
            String imageUrl = jsonObject.getString("fileUrl");
            String userId = jsonObject.getString("userId");
            log.setOriginalUrl(imageUrl);
            log.setUserId(userId);
            log.setDateline(TimeUtils.getCurrentUnixTime());
            RestResult restResult = AliYunOSSUtils.portraitSplit(imageUrl);
            if (restResult.getCode() != 200) {
                result.put("message", restResult.getMessage());
                result.put("status", "err");
                log.setErrMsg(restResult.getMessage());
                return result;
            }
            JSONObject object = JSONObject.parseObject(restResult.getData().toString());
            log.setResult(object.toJSONString());
            String requestId = object.getString("requestId");
            log.setRequestId(requestId);
            JSONObject dataObject = object.getJSONObject("data");
            System.out.println("dataObject=" + dataObject);
            JSONArray elArray = dataObject.getJSONArray("elements");
            System.out.println(elArray.size());
            if (elArray.size() > 1) {
                System.out.println("请上传单人照片进行识别");
                result.put("message", "请上传单人照片进行识别");
                result.put("status", "err");
                log.setErrMsg(restResult.getMessage());
                return result;
            }
            JSONObject o = (JSONObject) elArray.get(0);
            String url = o.getString("imageURL");
            String splitUrl = AliYunOSSUtils.uploadImageWithUrl(url, imageUrl);
            Long w = o.getLong("width");
            Long h = o.getLong("height");
            Long x = o.getLong("x");
            Long y = o.getLong("y");
            log.setSplitUrl(splitUrl);
            log.setWidth(w);
            log.setHeight(h);
            log.setX(x);
            log.setY(y);
            portraitSplitLogService.add(log);
            result.put("data", log.getSplitUrl());
            result.put("status", "ok");
        } catch (Exception e) {
            e.printStackTrace();
            result.put("message", "处理过程出错");
            result.put("status", "ok");
        }
        return result;
    }
  •  阿里云人脸分割
 public static RestResult portraitSplit(String imageUrl) {
        try {
            DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
            IAcsClient client = new DefaultAcsClient(profile);
            SegmentHeadRequest request = new SegmentHeadRequest();
            request.setRegionId(REGION_ID);
            request.setImageURL(HOST + "/" + imageUrl);
            request.setReturnForm("PNG");
            SegmentHeadResponse response = client.getAcsResponse(request);
            JSONObject object = JSONObject.parseObject(JSON.toJSONString(response));
            return RestResult.ok(object);
        } catch (com.aliyuncs.exceptions.ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
            if ("InvalidFile.Content".equals(e.getErrCode())) {//输入图像内容不合法。例如:1输入的image是空字符串。2无效的base64编码图像。3无效的image content。
                return RestResult.error("没有识别到人脸,请重新选择图片");
            }
            if ("InvalidImage.Download".equals(e.getErrCode())) {
                return RestResult.error("图片下载失败");
            }
            if ("InvalidParameter".equals(e.getMessage())) {
                return RestResult.error("图片处理参数有误");
            }
            return RestResult.error("图片分割失败,请重新上传");
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014479.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号