1、新增临时素材,接口java代码:
/** * 文件上传到微信服务器 * @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())); }
相关推荐
小易Smalle博文:微信公众平台开发【素材管理】上传临时素材http://blog.csdn.net/oldinaction/article/details/47903989 示例代码
主要为大家详细介绍了java实现上传网络图片到微信临时素材,网络图片上传到微信服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
PHP微信公众平台上传和下载临时素材用例,把下载到的文件解压到PHP的根目录,浏览器打开静态(index.html)选择上传的图片,点击上传就可以。适合初学者,界面不是很好,没有进行过多的修饰,但功能比较实用。 注意...
微信开发之素材管理是子恒老师《微信公众平台开发》视频教程的第三部。详细讲解了用php开发微信,对微信公众平台...内容包含微信临时素材,永久素材的上传,删除,获取素材的media_id等等。欢迎反馈,微信/QQ:68183131
1. 新增临时素材 临时素材顾名思义是临时的,上传后一定时间就被清理掉,适用于一些有时效性的图文链接。关于临时素材需要注意的点: 对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天...
除了3天就会失效的临时素材外,开发者有时需要永久保存一些素材,届时就可以通过本接口新增永久素材。 最近更新,永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,...
1、客房管理:客房预约、入住、退房、房间状态信息、新增客房 2、客户管理:客户基本信息增删改查、客户消费清单 3、后勤管理:水电费、库存物资管理 4、行政管理:财务管理(员工工资账单、内部财务账单、酒店盈利...
·[新功能] 用户新增Meta信息,用于底层临时存储部分关联信息 ·[新功能] Request新增isGet方法用于判断GET请求方式 ·[新功能] 用户注册IP信息 ·[新功能] TextAjaxRequest组件部分属性重构和新增方法 ·[新...
[新增]网站内容自动采集系统,包括新闻采集、文章采集,可以扩展到图片、素材等图文采集;[新增]论坛增加“魔法表情”功能;[新增]论坛帖子楼层颜色渐变,论坛HTML后台控制、生成与打印功能(支持HTML);[新增]增加...
2023最新文件快递柜系统网站源码 | 匿名口令分享 | 临时文件分享 很多时候,我们都想将一些文件或文本传送给别人,或者跨端传递一些信息,但是我们又不想为了分享,而去下载一些七里八里的软件,这时候,我们就可以...
前段采用主流vue+elementui+admin 后端采用spring boot 1.小区资源操作 1.1 新增小区 ...8.临时车费用资源操作 8.1 新增费用 8.2 修改费用 8.3 删除费用 9.道闸问候语资源操作 9.1 问候语修改 9.2 手工进出场
微信登录支持微信支付/支付宝支付支持微信接入/获取微信素材后台管理员多角色管理:每个角色可以设定不同后台界面(结合桌面设置),每个角色可以指定管理某个栏目图片管理:各种上传的图片可以进行管理,可以及时...
支持AVCHD便携摄像机的格式 — 新增的AVCHD解码功能可以将新一代的AVCHD便携摄像机里的视频素材转换后用于编辑、输出流媒体或刻录DVD。 加快多核CPU系统的编码速度 — MPEG-2(传输流)的Grid编码支持,为新的多核...
支持AVCHD便携摄像机的格式 — 新增的AVCHD解码功能可以将新一代的AVCHD便携摄像机里的视频素材转换后用于编辑、输出流媒体或刻录DVD。 加快多核CPU系统的编码速度 — MPEG-2(传输流)的Grid编码支持,为新的多核...
支持AVCHD便携摄像机的格式 — 新增的AVCHD解码功能可以将新一代的AVCHD便携摄像机里的视频素材转换后用于编辑、输出流媒体或刻录DVD。 加快多核CPU系统的编码速度 — MPEG-2(传输流)的Grid编码支持,为新的多核...
* FTP 选项“上传为临时文件, 然后改名” * SOCKS5 代理选项 * 目录窗口支持 CHMOD 命令 * “使用 TortoiseGit”菜单选项 (“文件”->“TortoiseSVN”) * “搜索”->“搜索 Web”菜单命令 * 拆分窗格具有独立滚动条 ...
支持AVCHD便携摄像机的格式 — 新增的AVCHD解码功能可以将新一代的AVCHD便携摄像机里的视频素材转换后用于编辑、输出流媒体或刻录DVD。 加快多核CPU系统的编码速度 — MPEG-2(传输流)的Grid编码支持,为新的多核...
完成后可选择是否移除TempDocx目录 【程序会生成一个转换DOCX的临时目录,可选择结束后自动删除】 转换完毕后合并列表里面的PDF文件 【目前暂时禁用,已添加到合并PDF页面】 PDF转WORD 【不支持扫描件PDF】 EXCEL...