- 首选通过上传提审素材接口上传了一张图片
//请求头设置
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;
麻烦指教一下
你好,你是要把这个图片放在哪里的时候发现它不完整呢?返回的URL中查看到吗