NutzCN Logo
问答 微信素材上传图片 40066 invalid url hint
发布于 3040天前 作者 qq_d6c9c504 6080 次浏览 复制 上一个帖子 下一个帖子
标签:
try {
			if (err != null && err.getAdaptorErr() != null) {
				return NutMap.NEW().addv("code", 1).addv("msg", "文件不合法");
			} else if (tf == null) {
				return Result.error("空文件");
			} else {
				WxApi2 wxApi2 = wxConfigService.getWxApi2(wxid);
				WxResp resp = wxApi2.add_material("image", tf.getFile());
				if (resp.errcode() != 0) {
					return Result.error(resp.errmsg());
				}
				String url = resp.getString("url");
				Wx_image wxImage = new Wx_image();
				wxImage.setUrl(url);
				wxImage.setMedia_id(resp.media_id());
				wxImage.setWxid(wxid);
				wxImageService.insert(wxImage);
				return Result.success("上传成功");
			}
25 回复

换最新快照版

来自炫酷的 NutzCN

@wendal 兽总?是 换这个
org.nutz
nutz
1.r.58-SNAPSHOT
?版本号是多少?

@qq_d6c9c504 就是这个

来自炫酷的 NutzCN

我本地就是使用的这个引用,但是还是出错了

 <dependency>
            <groupId>org.nutz</groupId>
            <artifactId>nutz</artifactId>
            <version>1.r.58-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.nutz</groupId>
            <artifactId>nutz-plugins-daocache</artifactId>
            <version>1.r.57</version>
        </dependency>
        <dependency>
            <groupId>org.nutz</groupId>
            <artifactId>nutz-integration-quartz</artifactId>
            <version>1.r.57.r2</version>
        </dependency>
        <dependency>
            <groupId>org.nutz</groupId>
            <artifactId>nutz-integration-shiro</artifactId>
            <version>1.r.57</version>
        </dependency>
        <dependency>
            <groupId>org.nutz</groupId>
            <artifactId>nutzwx</artifactId>
            <version>1.r.57</version>
        </dependency>

哦!! url填了啥? 貌似微信现在不允许随便填了

没有填写,应该是上传插件自己生成的

好的,我先调试下

@wendal 图片路径:C:\Users\lifei.guo\nutzwk\upload\tmp\00\00\00\00\00\00\00\14.jpg,图片名称:14.jpg,这个是日志记录的file对象的路径。

String url = resp.getString("url");

这个url的值变成本地路径了??

哦, 才明白,说的是这里

				WxResp resp = wxApi2.add_material("image", tf.getFile());
				if (resp.errcode() != 0) {
					return Result.error(resp.errmsg());
				}

对吧?

换这个是没有问题,但是uploadimg是上传临时素材,add_material是永久素材。

@qq_d6c9c504 你确定是最新的快照版了吗? 我吃完饭试试哦...

@wendal 是的,我刚才还nutzwx换成最新快照了

   <dependency>
            <groupId>org.nutz</groupId>
            <artifactId>nutzwx</artifactId>
            <version>1.r.58-SNAPSHOT</version>
        </dependency>

是不是FieldMeta的放的文件信息有问题,导致上传失败

应该是media_upload

@wendal 微信官网文档中是add_material这接口

新增永久视频素材的调用示例:
curl "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE" -F media=@media.file -F  description='{"title":VIDEO_TITLE, "introduction":INTRODUCTION}'

@wendal 我看文档是material/add_material地址
我是手动改本地的?还是你们打包到1.r.58-SNAPSHOT上?

@qq_d6c9c504 自动打包的,刷新maven就会下载.

@wendal 感谢兽总的鼎力及时支持,已经成功了。哈哈~~~~

@wendal 兽总,能不能把 add_video方法也改了,里面的地址也是错的

 public WxResp add_video(File f, String title, String introduction) {
        if(f == null) {
            throw new NullPointerException("meida file is NULL");
        } else {
            String url = String.format("https://api.weixin.qq.com/cgi-bin/media/add_material?access_token=%s", new Object[]{this.getAccessToken()});
            Request req = Request.create(url, METHOD.POST);
            req.getParams().put("media", f);
            req.getParams().put("description", Json.toJson((new NutMap()).setv("title", title).setv("introduction", introduction), JsonFormat.compact().setQuoteName(true)));
            Response resp = (new FilePostSender(req)).send();
            if(!resp.isOK()) {
                throw new IllegalStateException("add_material, resp code=" + resp.getStatus());
            } else {
                return (WxResp)Json.fromJson(WxResp.class, resp.getReader("UTF-8"));
            }
        }
    }

添加回复
请先登陆
回到顶部