• Java-微信开发上传永久素材(支持所有文件类型)


    /**
    	 * 上传永久素材
    	 * @param	file
    	 * @param	type
    	 * @param	title type为video时需要,其他类型设null
    	 * @param	introduction type为video时需要,其他类型设null
    	 * @return	{"media_id":MEDIA_ID,"url":URL}
    	 */
    	public static String uploadPermanentMaterial(File file, String type, String title, String introduction) {
    		
    		String access_token = "10__IK_6jLYuvdvIwdftOObUbTt8HcKZER8UBjvxD6CVpbJRBYGtGQ-HmqfnSrg4YBxQ4wBS4DPaksWeQzte1jmh1g1zLULAOA4leL5iekLX5tdQYlqRQJtSKOh6FeratK4WBlNT0cXdDXPdplKFQHfAIAOZQ";
    		String url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token="
    				+ access_token + "&type=" + type;
     
    		String result = null;
     
    		try {
    			URL uploadURL = new URL(url);
     
    			HttpURLConnection conn = (HttpURLConnection) uploadURL.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("Cache-Control", "no-cache");
    			String boundary = "-----------------------------" + System.currentTimeMillis();
    			conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
     
    			OutputStream output = conn.getOutputStream();
    			output.write(("--" + boundary + "
    ").getBytes());
    			output.write(String.format("Content-Disposition: form-data; name="media"; filename="%s"
    ", file.getName()).getBytes());
    			output.write("Content-Type: video/mp4 
    
    ".getBytes());
     
    			byte[] data = new byte[1024];
    			int len = 0;
    			FileInputStream input = new FileInputStream(file);
    			while ((len = input.read(data)) > -1) {
    				output.write(data, 0, len);
    			}
     
    			/*对类型为video的素材进行特殊处理*/
    			if ("video".equals(type)) {
    				output.write(("--" + boundary + "
    ").getBytes());
    				output.write("Content-Disposition: form-data; name="description";
    
    ".getBytes());
    				output.write(String.format("{"title":"%s", "introduction":"%s"}", title, introduction).getBytes());
    			}
     
    			output.write(("
    --" + boundary + "--
    
    ").getBytes());
    			output.flush();
    			output.close();
    			input.close();
    			
    			InputStream resp = conn.getInputStream();
     
    			StringBuffer sb = new StringBuffer();
     
    			while ((len = resp.read(data)) > -1)
    				sb.append(new String(data, 0, len, "utf-8"));
    			resp.close();
    			result = sb.toString();
    		} catch (IOException e) {
    			//....
    		}
    		
    		return result;
    	}
    苟利国家生死以, 岂因祸福避趋之
  • 相关阅读:
    POJ 2749
    POJ 3422
    POJ 3621
    SQLSERVER 2005 重新安装过程中的疑难解决
    可遇不可求的Question之MySqlClient访问字段返回System.Byte[]篇
    可遇不可求的Question之odbc驱动无法加载
    可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失
    可遇不可求的Bug之Convert.Int32(<未定义的值>)等于0
    可遇不可求的Question之数据库操作超时篇
    可遇不可求的Question之数据库 'tempdb' 的日志已满。
  • 原文地址:https://www.cnblogs.com/chintsai/p/11829199.html
Copyright © 2020-2023  润新知