# 文件上传

先获取文件上传权限,再上传文件。可用于其他业务参数(以fs:开头)。

# 一、请求说明

# 二、请求参数

名称 类型 是否必须 描述
bizType String 业务类型
  • 字段解释

  • bizType 类型介绍

类型字段 类型介绍
ocr OCR业务
liveness_video 视频活体业务
liveness_image 静态图片活体业务
face 人脸对比业务

请求示例:

https://api.spiderid.cn/api/router/rest?
&bizType=XXX
&<[公共请求参数]>

# 三、响应参数

data 结果信息 类型 描述
uploadUrl String 上传地址
token String 验证令牌
expireSeconds String 上传操作时间(秒)
objectKey String 上传对象的key
dir String 上传目录

# 四、成功示例

JSON示例

{
   "code": 0,
    "requestId":"dsd24...",
    "message": "success",
    "data": {
        "uploadUrl":"http://fs.unitid.cn/livess-auth",
        "token":"bIHeY2BDQz21XwXD98QwjhnqRGjkuUVh",
        "expireSeconds":1540816434718,
        "objectKey":"sYYACWjpE26bmbZK/2018/10/30/9ddf47709afe476c8c9c9dd75633e083",
        "dir":"sYYACWjpE26bmbZK/2018/10/30/"
    }
}

# 五、失败示例

JSON示例

{
  "code": 10008,
  "requestId":"b0c26c...",
  "message": "App不存在或状态异常"
}

# 六、文件上传

  • Upload Url: http://fs.unitid.cn/livess-auth
  • Http Method: POST
  • 参数1: token
  • 参数2: key
  • 参数3: file

Postman:

Postman

响应:

{
    "bucket": "livess-auth",
    "uploadDate": 1540867967818,
    "objectKey": "sYYACWjpE26bmbZK/2018/10/30/9ddf47709afe476c8c9c9dd75633e083.jpg",
    "length": 1298667,
    "contentType": "image/jpeg",
    "md5": "dbfb73a223c9c31b017c959a0b957820"
}

# SDK 请求示例

        //提供的url
        String url = "http://api.spiderid.cn/api/router/rest";
        //您的appKey
        String appkey = "XXX";
        //您的appSecret
        String secretKey = "XXX";
        //业务类型
        String bizType = "XXX";

        //1.默认客户端
        ApiClient apiClient = new DefaultApiClient(url, appkey, secretKey);

        //2.调用出错自动重试客户端
        //AutoRetryApiClient apiClient = new AutoRetryApiClient(url, appkey, secretKey);

        FsUploadPolicyRequest req = new FsUploadPolicyRequest();
        req.setBizType(bizType);
        try {

            //获取文件上传权限
            FsUploadPolicyResponse fsResponse = apiClient.execute(req);
            //获取权限失败
            if (null == fsResponse.getData()) {
                throw new ApiException();
            }


            //获取权限成功,上传文件示例
            Map<String, String> params = new HashMap<String, String>(5);
            params.put("token", fsResponse.getData().getToken());
            //以/结尾,可以上传多文件
            if (fsResponse.getData().getObjectKey().endsWith("/")) {
                params.put("key", fsResponse.getData().getObjectKey() + "${filename}");
            } else {
                //不以/结尾只能上传单文件
                params.put("key", fsResponse.getData().getObjectKey());
            }
            //需要上传的文件
            Map<String, FileItem> fileParams = new HashMap<String, FileItem>(5);
//            //base64字符串
//            String baset64String = FileUtils.readFileToString(new File("C:\\workspace\\real-identity-openapi-java-sdk\\src\\test\\resources\\data\\cwb.txt"), "utf-8");
//            fileParams.put("file", new FileItem("uu.jpg", Base64.decodeBase64(baset64String)));
            fileParams.put("file", new FileItem(new File("C:\\workspace\\real-identity-openapi-java-sdk\\src\\test\\resources\\data\\uu.jpg")));

//            // 当公共参数encMethod=SM4时,上传的文件也要进行加密
//            // 获取文件流
//            File file = new File("C:\\workspace\\real-identity-openapi-java-sdk\\src\\test\\resources\\data\\uu.jpg");
//            byte[] content = FileUtils.readFileToByteArray(file);
//            // 对文件进行加密
//            byte[] encryptContent = Sm4Utils.encrypt(content, DefaultApiClient.encPassword);
//            String fileName = file.getName();
//            fileParams.put("file", new FileItem(fileName, encryptContent, FileContentTypeUtils.mimeTypeByFilename(fileName)));            //上传

            String json = WebUtils.doPost(fsResponse.getData().getUploadUrl(), params, fileParams, 5000, 30000);
            JSONObject jsonObject = JSON.parseObject(json);
            //上传失败
            if (null == jsonObject.getString("objectKey")) {
                throw new ApiException();
            }


            //上传成功,后续业务处理 如图片OCR识别支持fs路径,
            OcrRecognitionRequest ocrReq = new OcrRecognitionRequest();
            ocrReq.setImageType("IDCARD");
            String imgFs = jsonObject.getString("bucket") + ":" + jsonObject.getString("objectKey");
            ocrReq.setImageFs(imgFs);

            // 配置此参数时,会对请求参数中的image和响应结果中info属性做加密
//            req.setEncMethod(EncryptMethod.SM4);
            
            OcrRecognitionResponse response = apiClient.execute(ocrReq);
        } catch (ApiException e) {
            e.printStackTrace();
        }

最后更新于: 2/9/2023, 8:12:55 PM