lotus上传附件到微信的问题

现在发文本信息没问题,但发附件由于从客户端上传老是报错,所以无法实现,我们公司现在是cs架构,所以我最开始用的lsmurl = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=" + token + "&type=file"Set h = CreateObject("MSXML2.XMLHTTP")Call h.Open ("PO...显示全部
现在发文本信息没问题,但发附件由于从客户端上传老是报错,所以无法实现,我们公司现在是cs架构,所以我最开始用的ls

murl = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=" + token + "&type=file"
Set h = CreateObject("MSXML2.XMLHTTP")
Call h.Open ("POST" , murl , False)
Call h.setRequestHeader ("Content-type:", "multipart/form-data;charset=UTF-8")
       
Dim rtitem As Variant
Set rtitem = doc.getfirstitem("附件")

Forall obj In rtitem.EmbeddedObjects
                Call h.Send(obj.Object)
End Forall

现在返回值就是media data missing,所以我send到底应该send什么呢?因为按我的理解不就是把那个object发送过去吗?

然后我还用了java,也就是网上大家互相传播的那个

String last_wechat_url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=&type=file";
                                File file = new File("D:\123.txt");
                               
                                URL url = new URL(last_wechat_url);
                                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                               
                                // 定义数据分割符
                                String boundary = "----------sunlight";
                               
                                // 发送POST请求必须设置如下两行
                                conn.setDoOutput(true);
                                conn.setDoInput(true);
                                conn.setUseCaches(false);
                                conn.setRequestMethod("POST");
                                //conn.setConnectTimeout(6*1000);
                                conn.setRequestProperty("connection", "Keep-Alive");
                                conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
                                conn.setRequestProperty("Charsert", "UTF-8");
                                conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
                                OutputStream out = new DataOutputStream(conn.getOutputStream());
                                byte[] end_data = ("rn--" + boundary + "--rn").getBytes();// 定义最后数据分隔线

                                StringBuilder sb = new StringBuilder();
                                sb.append("--" + boundary + "rn");
                                sb.append("Content-Disposition: form-data;name="media";filename="" + file.getName() + ""rn");
                                sb.append("Content-Type:application/octet-streamrnrn");

到了OutputStream out = new DataOutputStream(conn.getOutputStream());这一步就报错。。。接下来我就不知道了。。。

或者还有什么方法能实现上传附件吗?。。。CS架构下。。。。收起
参与5

查看其它 3 个回答dsieyx的回答

dsieyxdsieyx软件开发工程师payton
另外,我有个疑问。。。我上传的应该是。。。object还是数据流?我的意思是要不要把附件转换成数据流再发送还是怎样?那又该如何把附件转化成二进制文件嘞。。。  = =

换个说法,就是如果我现在要上传一个doc文档,我需不需要把doc文档转化一次再send还是?
互联网服务 · 2015-01-13
浏览1314

回答者

dsieyx
软件开发工程师payton

dsieyx 最近回答过的问题

回答状态

  • 发布时间:2015-01-13
  • 关注会员:1 人
  • 回答浏览:1314
  • X社区推广