收藏
回答

企业微信会话存档文件, 下载图片时, 交替出现 10001, 10003 错误 , 该如何解决 ?

public File saveImage(Image image) {
    File file = new File("/home/niko/feishu/" + image.getMd5sum() + ".png");
    if (file.exists() && file.length() == image.getFilesize()) {
        return file;
    }
    String indexbuf = "";
    while (true) {
        //每次使用GetMediaData拉取存档前需要调用NewMediaData获取一个media_data,在使用完media_data中数据后,还需要调用FreeMediaData释放。
        long media_data = Finance.NewMediaData();
        int ret = Finance.GetMediaData(sdk, indexbuf, image.getSdkfileid(), null, null, 5 * 100, media_data);

        if (ret != 0) {
            log.warn("download attachment response ret [{}]", ret);
            Finance.FreeMediaData(media_data);
            return null;
        }

        try {
            //大于512k的文件会分片拉取,此处需要使用追加写,避免后面的分片覆盖之前的数据。
            FileOutputStream outputStream = new FileOutputStream(file, true);
            outputStream.write(Finance.GetData(media_data));
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (Finance.IsMediaDataFinish(media_data) == 1) {
            //已经拉取完成最后一个分片
            Finance.FreeMediaData(media_data);
            break;
        } else {
            //获取下次拉取需要使用的indexbuf
            indexbuf = Finance.GetOutIndexBuf(media_data);
            Finance.FreeMediaData(media_data);
        }
    }
    log.info("download [{}] success, file size [{}]", image.getMd5sum(), file.length());
    return file;
}

入参为: 
Image build = Image.builder()
        .md5sum("0f6f32659314f37f1d36ba6eb8f5a1fe")
        .filesize(1621628L)
        .sdkfileid("CtYBMzA2OTAyMDEwMjA0NjIzMDYwMDIwMTAwMDIwNDM3ZWZjMWY1MDIwMzBmNDI0MzAyMDQ2M2ZjNmRkZjAyMDQ2OTA5MmJiMTA0MjQzNjM0MzAzNTMxNjUzMzMxMmQzMzY0MzY2MzJkMzQ2NTMyMzUyZDM5NjE2MTMwMmQ2MjY1MzQ2NjMxMzQzMzM0MzkzNTMxNjIwMjAxMDAwMjAzMThiZTgwMDQxMDBmNmYzMjY1OTMxNGYzN2YxZDM2YmE2ZWI4ZjVhMWZlMDIwMTAyMDIwMTAwMDQwMBI4TkRkZk1UWTRPRGcxTURjNU9EY3lNelUzTTE4eE1EWXlOVFF6TmpZeFh6RTNOakl5TURnMk9UUT0aIGM5OGRhNmFmYjIyNDFjNDIxY2ZkNDZmYjk0YjJhYzY3")
        .build();

// 日志如下
15:16:58.747 [http-nio-8080-exec-8] WARN feishu.wechat.FinanceService[89]download attachment response ret [10001]
15:17:03.196 [http-nio-8080-exec-9] WARN feishu.wechat.FinanceService[89]download attachment response ret [10003]



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

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    2025-11-05
    有用
登录 后发表内容