zoukankan      html  css  js  c++  java
  • 多媒体文件上传到微信服务器

        /**
         * 文件上传到微信服务器
         * @param fileType 文件类型
         * @param filePath 文件路径
         * @return JSONObject
         * @throws Exception
         */
        public JSONObject sendFile(String fileType, String filePath,String access_token) throws Exception {  
            String result = null;  
            File file = new File(filePath);  
            if (!file.exists() || !file.isFile()) {  
                throw new IOException("文件不存在");  
            }  
            /** 
            * 第一部分 
            */  
            URL urlObj = new URL("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token="
            +access_token+"&type="+fileType);  // 微信多媒体文件上传接口
            HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();  
            con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式  
            con.setDoInput(true);  
            con.setDoOutput(true);  
            con.setUseCaches(false); // post方式不能使用缓存  
            // 设置请求头信息  
            con.setRequestProperty("Connection", "Keep-Alive");  
            con.setRequestProperty("Charset", "UTF-8");  
            // 设置边界  
            String BOUNDARY = "----------" + System.currentTimeMillis();  
            con.setRequestProperty("Content-Type", "multipart/form-data; boundary="+ BOUNDARY);  
            // 请求正文信息  
            // 第一部分:  
            StringBuilder sb = new StringBuilder();
            sb.append("--"); // 必须多两道线  
            sb.append(BOUNDARY);  
            sb.append("
    ");  
            sb.append("Content-Disposition: form-data;name="file";filename=""+ file.getName() + ""
    ");  
            sb.append("Content-Type:application/octet-stream
    
    ");  
            byte[] head = sb.toString().getBytes("utf-8");  
            // 获得输出流  
            OutputStream out = new DataOutputStream(con.getOutputStream());  
            // 输出表头  
            out.write(head);  
            // 文件正文部分  
            // 把文件已流文件的方式 推入到url中  
            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[] foot = ("
    --" + BOUNDARY + "--
    ").getBytes("utf-8");// 定义最后数据分隔线  
            out.write(foot);  
            out.flush();  
            out.close();  
            StringBuffer buffer = new StringBuffer();  
            BufferedReader reader = null;  
            try {  
            // 定义BufferedReader输入流来读取URL的响应  
            reader = new BufferedReader(new InputStreamReader(con.getInputStream()));  
            String line = null;  
            while ((line = reader.readLine()) != null) {  
            //System.out.println(line);  
            buffer.append(line);  
            }  
            if(result==null){  
            result = buffer.toString();  
            }  
            } catch (IOException e) {  
            System.out.println("发送POST请求出现异常!" + e);  
            e.printStackTrace();  
            throw new IOException("数据读取异常");  
            } finally {  
            if(reader!=null){  
            reader.close();  
            }  
            }  
            JSONObject jsonObj =JSONObject.fromObject(result);  
            return jsonObj;  
        }
  • 相关阅读:
    关于append,appendTo,prepend,prependTo的区别
    CSS3 pointer-events:none应用举例及扩展
    jQuery插件的开发(一)
    css3 appearance在iphone上面的问题
    最短路系列
    最小生成树系列
    最大流问题
    poj_1050
    NO TIME, BUT COURAGE, BUT BEAUTY(汇编小程序)
    ubuntu软件与使用
  • 原文地址:https://www.cnblogs.com/YangK-java/p/6370468.html
Copyright © 2011-2022 走看看