素材管理-新增临时素材

1、新增临时素材,接口java代码:

参考:http://zhidao.baidu.com/link?url=yVJG7wo4R-_Ng1QzZscw4sRcRLn55EjYP8sGAIYIrZY2mzddT8K49_Jj49bhPw3wRKfLZMceGTmnGvREHVoPFE3nMSEhobeJbR6TjWnvJX7

    /**
     * 文件上传到微信服务器
     * @param fileType 文件类型
     * @param filePath 文件路径
     * @return JSONObject
     * @throws Exception
     */
	public static JSONObject mediaUpload(String fileType, String filePath) 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="+ getAccessToken().getToken() + "&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("\r\n");
		sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"\r\n");
		sb.append("Content-Type:application/octet-stream\r\n\r\n");
		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 = ("\r\n--" + BOUNDARY + "--\r\n").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;
	}

  2、获取access_token代码:

    /** 
     * 获取access_token 
     *  
     * @return 
     */  
    public static AccessToken getAccessToken() {  
        AccessToken accessToken = null;  
        String requestUrl = access_token_url.replace("APPID", WxConstants.APPID).replace("APPSECRET", WxConstants.SECRET);  
        JSONObject jsonObject = httpRequest(requestUrl, "GET", null);  
        // 如果请求成功  
        if (null != jsonObject) {  
            try {  
                accessToken = new AccessToken();  
                accessToken.setToken(jsonObject.getString("access_token"));  
                accessToken.setExpiresIn(jsonObject.getInt("expires_in"));  
            } catch (JSONException e) {  
                accessToken = null;  
                // 获取token失败  
                logger.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));  
            }  
        }  
        logger.debug("获取token成功accessToken:--------------------------------------"+accessToken.getToken());
        return accessToken;  
    }  

 

3、新增临时素材Controller层代码:

    /**
     * 新增临时素材
     */
    public void save() {   
    	ResultModel rm = new ResultModel();
    	WxMaterial wxMaterial = new WxMaterial();
    	
    	String uploadDir = FileTool.getUploadFileDir();//存放目录
    	String filePath = PathKit.getWebRootPath() + uploadDir;
    	List<UploadFile> files = new ArrayList<UploadFile>();
    	try{
    		files = getFiles(filePath,MAXSize);
    	}catch (Exception e) {
    		e.printStackTrace();
    		rm.setMsg("附件大小必须在2M内");
    		renderJson(rm);
    		return;
    	}

    	String title = getPara("title");
    	String uuid = UniqueIDGenerator.getUUID();
        try {
        	if(files!=null && files.size()>0){
        		UploadFile uploadFile = files.get(0);
            	logger.debug("文件路径:"+filePath + "/" + uploadFile.getFileName());
    			JSONObject mediaUpload = WeixinUtil.mediaUpload(WeixinUtil.MEDIA_UPLOAD_IMAGE_, filePath + "/" + uploadFile.getFileName());
    			//上传失败
    			if (mediaUpload == null || (mediaUpload.get("errcode") !=null &&  0 != mediaUpload.getInt("errcode"))) { 
    				logger.debug("上传文件失败:"+mediaUpload.toString());
    			}else{     
        			WxMaterialBean wxMaterialBean = (WxMaterialBean)JSONObject.toBean( mediaUpload,WxMaterialBean.class );  
        			//保存文件
                    String oldFileName=uploadFile.getFileName();
            		String suffixFile=FileTool.GetExtensionName(oldFileName);//
            		String newFileName=UniqueIDGenerator.getUUID()+"."+suffixFile;
            		boolean upResult=FileTool.RenameFile(filePath,oldFileName,newFileName);
            		String newPath = (uploadDir+File.separator+newFileName).replaceAll("\\\\", "/");
                    AttachFile attachFile = new AttachFile();
                    attachFile.set("uuid", uuid);
                    attachFile.set("content_type", uploadFile.getContentType());
                    attachFile.set("name", newFileName);
                    attachFile.set("old_name", oldFileName);
                    attachFile.set("field_name", uploadFile.getParameterName());
                    attachFile.set("path", newPath);
                    attachFile.save();

                    wxMaterial.set("uuid", uuid);
                    wxMaterial.set("title", title);
                    wxMaterial.set("type", wxMaterialBean.getType());
                    wxMaterial.set("media_id", wxMaterialBean.getMedia_id());
                    wxMaterial.set("created_at", wxMaterialBean.getCreated_at());
                    wxMaterial.save();
                    rm.setMsg("新增素材成功!");
                    rm.setSuccessCode();
                    renderJson(rm);
                    logger.debug("后台--新增临时素材成功-------------------"+(wxMaterial==null?"":wxMaterial.toString()));
                    return;
    			}
    			
        	}
		} catch (Exception e) {
			e.printStackTrace();
		}
        rm.setFailCode();
        rm.setMsg("新增素材失败!");
        renderJson(rm);
        logger.debug("后台--新增临时素材失败-------------------"+(wxMaterial==null?"":wxMaterial.toString()));
    }

 

你可能感兴趣的:(管理)