微信小程序在实现客服功能时,有时候需要自动回复一张图片给用户,这时候,我们需要提前将图片上传到微信小程序的素材库。然后微信客服才能将图片回复给用户。在这儿,我想插句嘴,微信小程序目前只支持临时素材库,不支持永久素材库。小编在做素材上传时,在这儿被这个坑坑了许久。
import com.alibaba.fastjson.JSONObject;
import com.dftcmedia.tckk.microservice.sskx.microapp.config.ClientProperties;
import com.dftcmedia.tckk.microservice.sskx.microapp.enums.MicroServiceCodeEnum;
import com.dftcmedia.tckk.microservice.sskx.microapp.exception.MicroException;
import com.dftcmedia.tckk.microservice.sskx.microapp.service.SensitivewordsService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;@Component
@Slf4j
public class UploadMediaIdUtil {@Resourceprivate SensitivewordsService sensitivewordsService;public String uploadMedia(){JSONObject jsonObject = uploadImage(“图片资源的URL”);if(jsonObject==null|| StringUtils.isBlank(jsonObject.getString("media_id"))){log.error("上传素材库"+jsonObject);throw new MicroException(MicroServiceCodeEnum.TARGET_NOT_EXIST);}return jsonObject.getString("media_id");}private  JSONObject uploadImage(String mediaUrl)  {//此处是获取微信小程序的AccessToken  前几篇文章对如何获取有专门说明,此处就不再赘述String accessToken = sensitivewordsService.getAccessToken();String url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token="+accessToken+"&type=image";try{byte[] file = getFile(mediaUrl);CloseableHttpClient httpclient = HttpClients.createDefault();CloseableHttpResponse response = null;HttpPost request = new HttpPost(url);MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);builder.addBinaryBody("media", file, ContentType.DEFAULT_BINARY, "1.jpg");HttpEntity entity = builder.build();request.setEntity(entity);HttpResponse resp = httpclient.execute(request);HttpEntity httpEntity = resp.getEntity();String result = EntityUtils.toString(httpEntity, "UTF-8");// 转成stringJSONObject jso = JSONObject.parseObject(result);log.info("上传临时素材结果:"+jso);return jso;}catch (Exception e){e.printStackTrace();return null;}}private static byte[] getFile(String url) throws IOException{URL urlConet = new URL(url);HttpURLConnection con = (HttpURLConnection)urlConet.openConnection();con.setRequestMethod("GET");con.setConnectTimeout(4 * 1000);InputStream inStream = con .getInputStream();    //通过输入流获取图片数据ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] buffer = new byte[2048];int len = 0;while( (len=inStream.read(buffer)) != -1 ){outStream.write(buffer, 0, len);}inStream.close();byte[] data =  outStream.toByteArray();return data;}
}

微信小程序通过url 上传远端图片 到微信小程序临时素材库 java相关推荐

  1. 小程序上传服务器图片压缩,微信小程序压缩图片并上传到服务器(拿去即用)...

    /**压缩图片*/compressionImage(tempFilePaths, params) { let that= thiswx.getImageInfo({ src: tempFilePath ...

  2. java上传图文消息_微信公众号开发之上传图文消息素材(十二)

    群发消息太重要了,公众号管理员需要定期通过公众号群发一些消息,用户通过推送的消息可以定期了解公众号的最新信息. 群发图文消息的过程如下: 首先,预先将图文消息中需要用到的图片,使用上传图文消息内图片接 ...

  3. 百度图库已上传的图片名字怎么修改命名?

    有两种办法: 1.是 本地上传那里,在上传之前改名字. 2.在素材库中. 修改位置

  4. 微信小程序之文件上传PHP后台接收

    微信小程序之文件上传(word,excel图片等) 微信前台代码 .html <!--pages/demo4/demo4.wxml--> <view class="cont ...

  5. 微信开发上传视频到服务器,微信小程序中实现上传视频的开发代码

    微信小程序中实现上传视频的开发代码,视频,接口,上传,代码,服务器 微信小程序中实现上传视频的开发代码 易采站长站,站长之家为您整理了微信小程序中实现上传视频的开发代码的相关内容. 本篇文章给大家带来 ...

  6. 微信小程录制视频上传服务器,微信小程序-从相册获取图片,视频使用相机拍照,录像上传+服务器nodejs版接收-微信小程序视频上传功能-微信小程序视频上传...

    在本文微信小程序-从相册获取图片使用相机拍照本地图片上传之前需要看看微信小程序-获取用户session_key,openid,unionid-后端为nodejs代码封装是在上文添加的.本文知识点:1. ...

  7. 微信小程序入门(四):miniprogram-ci + Jenkins + git 实现小程序代码的上传等操作

    目录 1. 实现要求 2. 实现方式一 2.1 Jenkins中其他配置这里不重复了,重点说构建部分的命令 2.2 Jenkins中运行构建任务,在小程序页面检查上传结果,没问题 3. 实现方式二 3 ...

  8. 微信小程序上传单张或多张图片

    上传作品图片,上传头像(count=1),亲测有效 分享一下核心代码,希望能帮助大家 1.wxml <!-- 上传作品 --> <view class='upload-works' ...

  9. 录音、上传、播放音频微信小程序实践

    文章目录 录音.上传.播放音频微信小程序实践 实践分析 依赖接口 录音 上传 播放 Page 事件 参考 录音.上传.播放音频微信小程序实践 最近上线了一款智能外呼机器人产品,需要开发一款录音.上传. ...

  10. Flask与微信小程序之文件上传与显示

    文章目录 Flask与微信小程序之文件上传与显示 背景 flask_uploads应用 flask_uploads的使用步骤 1 安装flask-uploads模块 2 在文件夹中导入需要用到的库 3 ...

最新文章

  1. C++11中= delete;的使用
  2. 2021湖南高考成绩分段查询,2021年湖南高考分数一分一段位次表,湖南高考个人成绩排名查询方法...
  3. WPF实现listview横向排列图标
  4. 将vim打造成IDE编程环境
  5. 【记录】vmware fusion 7 windows 10 unidentified network
  6. VTK:简单操作之UniformRandomNumber
  7. C语言文件操作函数的编写
  8. java类和对象及python中的类似实现
  9. HTML5在豆瓣中的应用
  10. antd组件:Table表格去掉表格边框线,#字类型表格
  11. html 抽签分小组代码,javascript随机抽签程序
  12. sql java web动态曲线图_使用Echarts实现动态曲线图表
  13. 【实用】Java对象与JSON字符串的互转,实用操作!
  14. Busybox实践2:分析busybox文件链接原理并编程模拟实现自己的busybox文件
  15. TensorFlow技术内幕(七):模型优化之XLA(上)
  16. 企鹅号如何度过新手期,视频运营注意要点,需要几天度过
  17. Charles(青花瓷)抓包教程
  18. .NET界面控件DevExpress发布v18.2.4|附下载
  19. 显示器带有音响且正常,耳机插到显示器音响耳机输出接口上却没有声音
  20. Neumann 纽曼话筒选购指南

热门文章

  1. 计算机之父图灵成为新50英镑“代言人”,吴恩达发推:Wonderful!
  2. java虚拟机 for win7 64位_最新win7 64位旗舰版安装版下载(64位iso镜像)
  3. vim [converted]乱码问题
  4. 【书评】多姿态诗意生活--读《十四堂人生创意课》有感
  5. 寒霜系列引擎技术解析
  6. pidgin qq_充分利用Pidgin的5条提示和技巧
  7. 360监测显示:cookie没有httponly标志解决方法
  8. 计算机任务管理器中的进程,Win7任务管理器中哪些进程可以关闭?
  9. Cisco网站模块 14 - 15:网络应用通信考试试题及答案
  10. 移动硬盘读取速度突然变慢?教你7个方法解决