java实现将MultipartFile文件转换为base64去掉编码头后再进行urlencode发送post请求调用聚合数据扫描名片

主要调用service代码片段

service方法 调用关系注意看方法指引

/**
     * 名片扫描
     *
     * @param file 文件
     * @param key  第三方 key
     * @return 返回的识别结果
     */
    public JSONObject sendScanCard(MultipartFile file, String key) throws IOException {
        JSONObject jsonObject = new JSONObject();
        //将util创建为对象
        HttpSendUtils httpSendUtils = new HttpSendUtils(restTemplate);

        try {
            //将MultipartFile文件转换为file
            File convert = FileUtils.convert(file);

            //将file转换为base64字符串
            String base64EncoderImg = Md5Utils.fileToBase64(convert.getPath());
            //删除创建的临时文件
            FileUtils.convert(file).delete();

            //封装参数集合
            MultiValueMap<String, String> stringMultiValueMap = new LinkedMultiValueMap<>();
            stringMultiValueMap.add("image", base64EncoderImg);
            stringMultiValueMap.add("key", key);
            String result = httpSendUtils.UPost(this.scanPath, stringMultiValueMap);
            //将返回数据转换成json
            jsonObject = JSONObject.parseObject(result);
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("扫描图片发成异常");
        }
        return jsonObject;
    }

将MultipartFile 转换为file保存为本地临时文件获取路径的方法以上调用的:FileUtils.convert(file);

/**
     * 将MultipartFile类型的文件转换为file文件
     *
     * @param file MultipartFile 类型的文件
     * @return 转换后的文件
     */
    public static File convert(MultipartFile file) {
        File convFile = new File(file.getOriginalFilename());
        try {
            convFile.createNewFile();
            FileOutputStream fos = new FileOutputStream(convFile);
            fos.write(file.getBytes());
            fos.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return convFile;
    }

发送的post携带参数的请求form-data提交方式:为以上调用的: httpSendUtils.UPost(this.scanPath, stringMultiValueMap);

 /**
     * Post请求(URL请求头)
     * form-data的请求方式
     * @param url 请求url
     * @return
     */
    public String doPost(String url, MultiValueMap<String, String> params) {
        //构建请求,拼接请求头
        HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(params, urlHeaderBuilder());
        //发送请求获取响应返回结果
        ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
        //返回结果
        return response.getBody();
    }
以上就是完美解决调用第三方接口携带图片转换base64作为参数 form-data为提交参数方式的请求,还有待改进但是足以解决刚需,如有更好的方案欢迎评论区给出交流(致力开源,欢迎交流分享)

调用聚合数据名片识别扫描的完美解决方案1


  1. 如果解决,别白嫖哦,欢迎打赏 ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值