我不怕和最强的人比一比的gravatar头像
我不怕和最强的人比一比 2015-03-24 14:43:36

微信第三方接口开发上传永久图片的API接口该怎么写?

在上传临时图片时的接口有个type属性,而在刚出来的上传永久图片的接口中只有token一个参数,而按照上传临时图片的方式上传永久图片也不行,牛牛吗们谁知道啊?

所有回答列表(3)
wwh的gravatar头像
wwh  LV2 2015年3月24日

http://mp.weixin.qq.com/wiki/14/7e6c03263063f4813141c3e17dd4350a.html 

 

你往下看 。。下面有type属性的

ivan747的gravatar头像
ivan747  LV7 2015年4月7日

下面是我从网上搜到的解决方法,自己使用了是可以的,看看是否是你需要的,你也可以直接搜索关键词“post 图片”,能得到很多解决方法。

 

public static String formUpload(String urlStr, Map<String, String> textMap, 
            Map<String, String> fileMap) { 
        String res = ""; 
        HttpURLConnection conn = null; 
        String BOUNDARY = "---------------------------123821742118716"; //boundary就是request头和上传文件内容的分隔符 
        try { 
            URL url = new URL(urlStr); 
            conn = (HttpURLConnection) url.openConnection(); 
            conn.setConnectTimeout(5000); 
            conn.setReadTimeout(30000); 
            conn.setDoOutput(true); 
            conn.setDoInput(true); 
            conn.setUseCaches(false); 
            conn.setRequestMethod("POST"); 
            conn.setRequestProperty("Connection", "Keep-Alive"); 
            conn 
                    .setRequestProperty("User-Agent", 
                            "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)"); 
            conn.setRequestProperty("Content-Type", 
                    "multipart/form-data; boundary=" + BOUNDARY); 
   
            OutputStream out = new DataOutputStream(conn.getOutputStream()); 
            // text 
            if (textMap != null) { 
                StringBuffer strBuf = new StringBuffer(); 
                Iterator iter = textMap.entrySet().iterator(); 
                while (iter.hasNext()) { 
                    Map.Entry entry = (Map.Entry) iter.next(); 
                    String inputName = (String) entry.getKey(); 
                    String inputValue = (String) entry.getValue(); 
                    if (inputValue == null) { 
                        continue; 
                    } 
                    strBuf.append("\r\n").append("--").append(BOUNDARY).append( 
                            "\r\n"); 
                    strBuf.append("Content-Disposition: form-data; name=\"" 
                            + inputName + "\"\r\n\r\n"); 
                    strBuf.append(inputValue); 
                } 
                out.write(strBuf.toString().getBytes()); 
            } 
   
            // file 
            if (fileMap != null) { 
                Iterator iter = fileMap.entrySet().iterator(); 
                while (iter.hasNext()) { 
                    Map.Entry entry = (Map.Entry) iter.next(); 
                    String inputName = (String) entry.getKey(); 
                    String inputValue = (String) entry.getValue(); 
                    if (inputValue == null) { 
                        continue; 
                    } 
                    File file = new File(inputValue); 
                    String filename = file.getName(); 
                    String contentType = new MimetypesFileTypeMap() 
                            .getContentType(file); 
                    if (filename.endsWith(".png")) { 
                        contentType = "image/png"; 
                    } 
                    if (contentType == null || contentType.equals("")) { 
                        contentType = "application/octet-stream"; 
                    } 
   
                    StringBuffer strBuf = new StringBuffer(); 
                    strBuf.append("\r\n").append("--").append(BOUNDARY).append( 
                            "\r\n"); 
                    strBuf.append("Content-Disposition: form-data; name=\"" 
                            + inputName + "\"; filename=\"" + filename 
                            + "\"\r\n"); 
                    strBuf.append("Content-Type:" + contentType + "\r\n\r\n"); 
   
                    out.write(strBuf.toString().getBytes()); 
   
                    DataInputStream in = new DataInputStream( 
                            new FileInputStream(file)); 
                    int bytes = 0; 
                    byte[] bufferOut = new byte[1024]; 
                    while ((bytes = in.read(bufferOut)) != -1) { 
                        out.write(bufferOut, 0, bytes); 
                    } 
                    in.close(); 
                } 
            } 
   
            byte[] endData = ("\r\n--" + BOUNDARY + "--\r\n").getBytes(); 
            out.write(endData); 
            out.flush(); 
            out.close(); 
   
            // 读取返回数据 
            StringBuffer strBuf = new StringBuffer(); 
            BufferedReader reader = new BufferedReader(new InputStreamReader( 
                    conn.getInputStream())); 
            String line = null; 
            while ((line = reader.readLine()) != null) { 
                strBuf.append(line).append("\n"); 
            } 
            res = strBuf.toString(); 
            reader.close(); 
            reader = null; 
        } catch (Exception e) { 
            System.out.println("发送POST请求出错。" + urlStr); 
            e.printStackTrace(); 
        } finally { 
            if (conn != null) { 
                conn.disconnect(); 
                conn = null; 
            } 
        } 
        return res; 
    } 
    
    public static String postMedia(String url,String type,String filePath){
        
        Map<String, String> textMap = new HashMap<String, String>(); 
           
        textMap.put("type", type); 
   
        Map<String, String> fileMap = new HashMap<String, String>(); 
           
        fileMap.put("media", filePath); 
           
        String ret = formUpload(url, textMap, fileMap);
        
        return ret;
    }
    
    
    
    public static void main(String args[]) throws IOException{
        //System.out.println(URLPostContent("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxf7eada91d02985a3&secret=c73e56b6f16c69f0f2107fbb144197e5", null));
        
        String filepath="d:\\500x600.jpg"; 
        
        String urlStr = "http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=lhIHK3OkOvY7GUmKNPtJh8budsOYhKWFGqRqcqg0zPv_UA-e7Nr3pYbUN3T8o4Q_t7ev-7S2u_Xpxci3ZxBSgOoLKJ-UbBBk1U-B-bstGXQ"; 
           
        String ret =  postMedia(urlStr,"image",filepath);
           
        System.out.println(ret); 
        
        
    }

jianggen的gravatar头像
jianggen  LV3 2016年4月24日

en bucuo 

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友