收藏
回答

上传提审素材后通过media获取图片不完整怎么处理?

  1. 首选通过上传提审素材接口上传了一张图片
//请求头设置
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.setContentLength(qo.getMedia().getSize());

//设置请求体,注意是LinkedMultiValueMap
MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
form.add("media", qo.getMedia().getResource());
UploadMediaResDto uploadMediaResDto = CallWeChatApiServiceHelp.callBasePostInterfaceHandlerOnAuthorizerAccessToken(WeChatEnums.WechatApiUrl.uploadmedia, qo, new HttpEntity<>(form, headers), UploadMediaResDto.class);


上传后返回了一个mediaid

2 然后通过获取永久素材接口传入该mediaid,返回了byte[] 上传到oss中(或者本地) 都发现文件不完全,打不开,但是相同代码本地测试其他上传接口没有问题,现在不知道哪个环节出了问题,是微信接收到的图片不完整还是 下载下来的流不完整

String url = CallWeChatApiServiceHelp.getUrlByAuthorizerAccessToken(WeChatEnums.WechatApiUrl.get_material, qo);
GetMaterialReqDto getMaterialReqDto = new GetMaterialReqDto().setMedia_id(qo.getMediaId());
ResponseEntity<byte[]> rsp = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(getMaterialReqDto), byte[].class);
Assert.notNull(rsp, "调用获取永久素材接口返回为null");

//上传图片
String newFileName = String.format("%s.jpg", CommonUtil.createCurrentGeneratorFolderNameByTimeStamp());
String remotePath = String.format("%s/%s", CommonConstant.WXCHAT_MINIO_UPLOAD_PREFIX, newFileName);
String uploadFile = MinIoUtil.uploadFile(this.minIoProperties, newFileName, new ByteArrayInputStream(rsp.getBody()), remotePath);
return uploadFile;


麻烦指教一下

回答关注问题邀请回答
收藏

1 个回答

  • 公众号技术运营专员-livia
    公众号技术运营专员-livia
    2022-06-29

    你好,你是要把这个图片放在哪里的时候发现它不完整呢?返回的URL中查看到吗

    2022-06-29
    有用
    回复 3
    • 独孤小标
      独孤小标
      2022-06-29
      你好,通过mediaid获取永久素材接口调用后,将返回的byte[] 上传到minio中(生成本地图片也试过了),然后预览或者下载的图片都打不开,现在不知道是返回的流不完整还是 什么问题
      2022-06-29
      回复
    • 独孤小标
      独孤小标
      2022-06-29
      我把整个过程写在了这里 https://developers.weixin.qq.com/community/develop/doc/000402292340b810972e14f7251c00  麻烦帮忙看看,谢了
      2022-06-29
      回复
    • 独孤小标
      独孤小标
      2022-06-29
      你好,用postman直接调用接口,返回的数据如下:
      2022-06-29
      回复
登录 后发表内容