OpenAPI方式上传图片并给单据图片字段赋值
1 业务背景
现场想通过openapi传外部系统图片到星瀚单据的图片字段,例如,物料的图片字段
2 思路与方案
操作API(零代码)方式目前是不能完全支持。
1、需要通过自定义api的方式先上传图片的文件服务器
// 先获取图片上传服务
FileService imageFileService = FileServiceFactory.getImageFileService();
// 字节流转文件流
InputStream input = new ByteArrayInputStream(file1.getFileData());
// 构造FileItem对象
FileItem var1 = new FileItem("文件名","相对路径","文件流");
// 上传图片
String path = imageFileService.upload(var1);
2、自定义api返回图片的path,赋值给单据的图片字段
3 实现过程
1、创建自定义api插件类,编写相关代码,参考:文件流处理接口
@ApiController(value = "dev", desc = "自定义API Demo样例2") @ApiMapping(value = "wfb/upload") public class CustomUploadFileController { @ApiPostMapping(value = "/uploadImage", desc = "上传文件流") public CustomApiResult<String> uploadFile(@NotNull @ApiParam("订单号") String billNo, @ApiParam("文件流") OpenApiFile file1) { if (StringUtil.isEmpty(billNo) || file1 == null || file1.getFileData() == null) { //手动设置http状态码406 ServiceApiContext.getResponse().setHttpStatus(HttpStatus.NOT_ACCEPTABLE.getStatusCode()); //返回失败错误码:errorCode:900101(业务自行约定) & status=false return CustomApiResult.fail("900101", "订单号billNo及文件流file1不能为空。"); } //构造相对路径:租户id/账户id/日期/202407/应用编码/单据编码/images/uuid/文件名 StringBuffer relativePath = new StringBuffer(); RequestContext requestContext = RequestContext.get(); relativePath.append(requestContext.getTenantId()); relativePath.append("/"); relativePath.append(requestContext.getAccountId()); relativePath.append("/"); relativePath.append("0703"); relativePath.append("/"); relativePath.append("kdec_case01"); relativePath.append("/"); relativePath.append("kdec_bill0701"); relativePath.append("/"); relativePath.append("images"); relativePath.append("/"); relativePath.append(UUID.randomUUID()); relativePath.append("/"); relativePath.append(file1.getFileName()); // 先获取图片上传服务 FileService imageFileService = FileServiceFactory.getImageFileService(); // 字节流转文件流 InputStream sbs = new ByteArrayInputStream(file1.getFileData()); // 构造FileItem对象 FileItem var1 = new FileItem(file1.getFileName(),relativePath,sbs); // 上传图片 String path = imageFileService.upload(var1); return CustomApiResult.success(path); } }
2、创建自定义api接口
3、通过postman或其他客户端测试,第三方图片上传并返回图片path;不了解api调用流程请学习:金蝶云苍穹OpenAPI调用流程
4、把步骤返回的图片路径对应的值path,赋值给单据中的图片字段
4 注意事项
1、案例介绍是通过两个api接口实现了图片的上传和绑定到单据图片字段中:自定义api(上传图片)+ 操作服务(保存单据)
2、构造FileItem对象中的参数相对路径需要包含文件名,格式可以参考文件服务的标准格式
格式:租户id/账户id/日期/202407/应用编码/单据编码/images/uuid/文件名
FileItem var1 = new FileItem("文件名","相对路径","文件流");
5 相关资料(可选)
OpenAPI方式上传图片并给单据图片字段赋值
1 业务背景现场想通过openapi传外部系统图片到星瀚单据的图片字段,例如,物料的图片字段2 思路与方案操作API(零代码)方式目前是不能完...
点击下载文档
本文2024-09-23 00:26:31发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139483.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章