package com.ltkj.web.controller.Idcard;
|
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.web.config.IdcardUtil.IdcardUtil;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.commons.io.FileUtils;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.util.Objects;
|
|
import static com.ltkj.web.config.IdcardUtil.IdcardUtil.readImageFile;
|
|
/**
|
* @Company: 西安路泰科技有限公司
|
* @Author: zjh
|
* @Date: 2023/3/17 13:41
|
*/
|
@RestController
|
@RequestMapping("/idCard")
|
@Api(tags = "身份证识别")
|
public class IdcardaController {
|
|
|
@PostMapping
|
@ApiOperation(value = "身份证识别接口")
|
public AjaxResult list(@RequestPart("file") MultipartFile files){
|
File file = new File(Objects.requireNonNull(files.getOriginalFilename()));
|
// 请求url
|
String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";
|
try {
|
FileUtils.copyInputStreamToFile(files.getInputStream(), file);
|
// 本地文件路径
|
//String filePath = "C:\\Users\\w\\Pictures\\Saved Pictures\\微信图片_20230317105940.jpg";
|
byte[] imgData = readImageFile(file);
|
String imgStr = IdcardUtil.encode(imgData);
|
String imgParam = URLEncoder.encode(imgStr, "UTF-8");
|
String param = "id_card_side=" + "front" + "&image=" + imgParam;
|
// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
|
String accessToken = IdcardUtil.getAccessToken();
|
String result = IdcardUtil.post(url, accessToken,param);
|
System.out.println(result);
|
return AjaxResult.success(result);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}finally {
|
// 会在本地产生临时文件,用完后需要删除
|
if (file.exists()) {
|
file.delete();
|
}
|
}
|
return AjaxResult.success();
|
}
|
|
}
|