前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OkHttp上传文件

OkHttp上传文件

作者头像
十毛
发布2019-06-21 16:14:06
2.3K0
发布2019-06-21 16:14:06
举报

对接微信的时候,需要通过后台再把图片上传到微信,得到mediaId后再执行后面操作。

图片上传接口

代码语言:javascript
复制
@PostMapping("upload")
public WebResult<ImageUploadResult> upload(@RequestParam("img") MultipartFile file) {
    final byte[] bytes;
    try {
        bytes = file.getBytes();
    } catch (IOException e) {
        log.warn("fail to read file", file.getOriginalFilename(), e);
        return new WebResult<>(500, "服务器错误,请稍后再试");
    }
    String md5Hex = DigestUtils.md5Hex(bytes).toUpperCase();
    Map<String, String> mapToSign = new HashMap<>(8);
    mapToSign.put("mch_id", MCH_ID);
    mapToSign.put("media_hash", md5Hex);
    mapToSign.put("sign_type", "HMAC-SHA256");
    //计算签名
    String sign = SignUtils.createSign(mapToSign, "HMAC-SHA256", MCH_KEY, null);
    
    //构造请求Body
    MultipartBody body = new MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("mch_id", MCH_ID)
            .addFormDataPart("media_hash", md5Hex)
            .addFormDataPart("sign_type", "HMAC-SHA256")
            .addFormDataPart("media", file.getOriginalFilename(), RequestBody.create(MediaType.parse("image/" + FileNameUtil.getExtension(file.getOriginalFilename())), bytes))
            .addFormDataPart("sign", sign)
            .build();
 
    //构造请求
    Request request = new Request.Builder().url("https://api.mch.weixin.qq.com/secapi/mch/uploadmedia")
            .post(body)
            .build();
    OkHttpClient client = new OkHttpClient.Builder()
            .sslSocketFactory(sslManager.getSocketFactory())
            .build();
    //后面的省略了...
}

常见错误

  • 遗漏MultipartBody.FORM:需要设置
代码语言:javascript
复制
setType(MultipartBody.FORM)
  • 签名错误:需要指定签名算法HMAC-SHA256
  • 其他问题:上传到微信的时候,还需要SSL配置,下一篇文章再介绍如何在OkHttp中配置SSL证书

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图片上传接口
  • 常见错误
  • 参考
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档