收藏
回答

企业微信机器人发送图片报media md5 not match?

media md5 not match, hint: [1589186279_51_26e4b408a53bf40d91d5ccd88d1c6d18], from ip: 223.68.196.14, more info at https://open.work.weixin.qq.com/devtool/query?e=301019

最后一次编辑于  2020-05-11
回答关注问题邀请回答
收藏

12 个回答

  • 企业微信运营专员-千夜
    企业微信运营专员-千夜
    2020-05-12

    您好,这个是代码问题,可以参考下{

        "msgtype": "image",

        "image": {

            "base64": "iVBORw0KGgoAAAANSUhEUgAAAIoAAACKCAYAAAB1h9JkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAF1SURBVHhe7dYxAYAwEMDASgFR4LTYeyQ0Am44BxmyrmcPnAiFZN3vN3AiFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCITGzJEIhEQqJUEjMLIlQSIRCIhQSM0siFBKhkAiFxMySCIVEKCRCIdjzA5oVKWxK2iiRAAAAAElFTkSuQmCC",

            "md5": "1bf0d144aa88eee8e49462fd2b644b06"

        }

    }

    2020-05-12
    有用
    回复 18
    • 李天亮
      李天亮
      2020-05-29
      不行,php md5_file 出来的值,说不匹配。有什么特殊操作么
      2020-05-29
      回复
    • 李天亮
      李天亮
      2020-05-29
      你这段代码中,没有\r \n == 之类的,有关系么
      2020-05-29
      回复
    • 李天亮
      李天亮
      2020-07-28
      能提供一下支撑解释么
      2020-07-28
      回复
    • 企业微信运营专员-千夜
      企业微信运营专员-千夜
      2020-07-28回复李天亮
      目前没有php的demo
      2020-07-28
      回复
    • 啊你路呀
      啊你路呀
      2020-07-29
      图片的base64数据前前面不要加data:image/***;base64,
      2020-07-29
      1
      回复
    查看更多(13)
  • 源心锁
    源心锁
    2022-08-06

    纯欠骂

    2022-08-06
    有用 1
    回复
  • AKM
    AKM
    2021-11-17
    /**PHP
     * 实际测试中发现部分格式企微识别有误 也可能是图片本身问题 没详尽研究
     * 未通过  PNG image data, 1500 x 800, 8-bit gray+alpha, non-interlaced
     * 通过   JPEG image data, JFIF standard 1.01
     */
    
    $image = 'xx.jpeg';
    
    $base64 = base64EncodeImage($image);
    $md5 = md5_file($image);
    function base64EncodeImage($image_file)
    {
        $image_data = fread(fopen($image_file, 'rb'), filesize($image_file));
        return base64_encode($image_data);
    }
    
    2021-11-17
    有用 1
    回复 2
    • 一点儿
      一点儿
      2022-08-24
      这个有用!!!!
      2022-08-24
      回复
    • 🤡
      🤡
      2022-08-26
      C#有什么方法嘛,一直报错说md5 not match
      2022-08-26
      回复
  • 随风
    随风
    2020-09-25

    md5 和base64 生成及请求

    imgkit.from_string(mail_content, 'downloads/111.png' , options={"encoding": "UTF-8"})

    f = open('downloads/111.png', 'br')

    fcont = f.read()

    m2 = hashlib.md5(fcont)

    md5_val = m2.hexdigest()

    base64_data=str(base64.b64encode(fcont),encoding='utf-8')

    r=requests.post(url,data={"msgtype":"image","image":{"base64":base64_data,"md5":md5_val}})


    2020-09-25
    有用 1
    回复 1
    • Forever Young
      Forever Young
      2021-08-12
      感谢老哥的这个答案 困扰了 许久
      2021-08-12
      回复
  • 念晓
    念晓
    2020-08-17

    把base64图片内容里的换行符清空了replaceAll("\r|\n", "")

    2020-08-17
    有用 1
    回复
  • ____D____
    ____D____
    2020-08-12

    检查下base64中 \r\n的。会影响校验

    2020-08-12
    有用 1
    回复
  • Sandul
    Sandul
    07-02

    // 这是java代码可以直接用的参考

    import org.apache.commons.codec.digest.DigestUtils;// 重要依赖

    @Test

        public void Test2() throws Exception {

            String purl = "图片url地址";

            URL url = new URL(purl);

            // 打开连接

            URLConnection connection = url.openConnection();

            try (

                    // 获取输入流

                    InputStream inputStream = connection.getInputStream();

                    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

            ){

                StreamUtils.copy(inputStream, outputStream);

                // 发送post请求

                String rurl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=机器人key";

                // 设置请求头

                HttpHeaders headers = new HttpHeaders();

                headers.setContentType(MediaType.APPLICATION_JSON);


                // 创建请求体

                Map<String, Object> image = new HashMap<>();

    //关键步骤

                image.put("base64", Base64.getEncoder().encodeToString(outputStream.toByteArray()).replaceAll("[\r\n]", ""));

                image.put("md5", DigestUtils.md5Hex(outputStream.toByteArray()));


                Map<String, Object> requestBody = new HashMap<>();

                requestBody.put("msgtype", "image");

                requestBody.put("image", image);


                // 创建 HttpEntity 对象,包含请求头和请求体

                HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestBody, headers);


                // 发送 POST 请求

                ResponseEntity<String> response = restTemplate.postForEntity(rurl, entity, String.class);


                // 打印响应信息

                System.out.println("Response Status Code: " + response.getStatusCode());

                System.out.println("Response Body: " + response.getBody());

            } catch (RestClientException e) {

                throw new RuntimeException(e);

            }

        }

    07-02
    有用
    回复
  • rice in water
    rice in water
    2023-05-15
    import org.apache.commons.codec.digest.DigestUtils;
    
    byte[] bytes = FileUtils.readFileToByteArray(new File("D:\\fsdownload\\bb.jpg"));
    String md5 = DigestUtils.md5Hex(bytes);
    
    //java 的方式
    
    2023-05-15
    有用
    回复
  • BBB
    BBB
    2022-12-26

    java 版代码,【坑点】转base64后要把\r\n替换掉,实测有效

    URL url = new URL(sendMessageContent.getImage());
    byte[] imageBytes = IoUtil.readBytes(url.openStream());
    
    String imageBase64Str = Base64.getEncoder().encodeToString(imageBytes)
            .replaceAll("[\r\n]", "");
    
    String md5 = MD5.create().digestHex(imageBytes);
    
    2022-12-26
    有用
    回复
  • 🐜
    🐜
    2020-10-30

    markdown都不支持图片链接,什么时候支持啊,太👎了

    2020-10-30
    有用
    回复

正在加载...

登录 后发表内容
问题标签