企业微信上传文件到服务器,上传素材到腾讯企业微信服务器
//filetype:文件类型;filePath:文件所在路径
@Override
public JSONObject uploadMedia(String fileType, String filePath) throws Exception {
// 返回结果
String result = null;
File file = new File(filePath);
if (!file.exists() || !file.isFile()) {
throw new IOException("文件不存在");
}
String token = publicService.getAppMedssageToken();
if (token == null) {
throw new IOException("未获取到token");
}
String uploadTempMaterial_url = "https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
uploadTempMaterial_url = uploadTempMaterial_url.replace("ACCESS_TOKEN", token).replace("TYPE", fileType);
URL url = new URL(uploadTempMaterial_url);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");// 以POST方式提交表单
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);// POST方式不能使用缓存
// 设置请求头信息
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Charset", "UTF-8");
// 设置边界
String BOUNDARY = "----------" + System.currentTimeMillis();
conn.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=\"media\"; filename=\"" + file.getName() + "\"\r\n");
sb.append("Content-Type:application/octet-stream\r\n\r\n");
// 获得输出流
OutputStream out = new DataOutputStream(conn.getOutputStream());
// 输出表头
out.write(sb.toString().getBytes("UTF-8"));
// 文件正文部分
// 把文件以流的方式 推送道URL中
DataInputStream din = new DataInputStream(new FileInputStream(file));
int bytes = 0;
byte[] buffer = new byte[1024];
while ((bytes = din.read(buffer)) != -1) {
out.write(buffer, 0, bytes);
}
din.close();
// 结尾部分
byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");// 定义数据最后分割线
out.write(foot);
out.flush();
out.close();
if (HttpsURLConnection.HTTP_OK == conn.getResponseCode()) {
StringBuffer strbuffer = null;
BufferedReader reader = null;
try {
strbuffer = new StringBuffer();
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String lineString = null;
while ((lineString = reader.readLine()) != null) {
strbuffer.append(lineString);
}
if (result == null) {
result = strbuffer.toString();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
}
JSONObject jsonObject = JSONObject.parseObject(result);
return jsonObject;
}
标签:sb,String,微信,append,服务器,new,null,上传,conn
来源: https://www.cnblogs.com/Marlo/p/15019929.html
企业微信上传文件到服务器,上传素材到腾讯企业微信服务器相关推荐
- Confluence wiki上传文件时报“不能上传文件至Confluence中,服务器可能已失效”
Confluence wiki 上传文件时报"不能上传文件至Confluence中,服务器可能已失效"的解决方法. 一. 后台管理修改配置 首先用管理员登陆Confluence后台 ...
- python requests 上传文件_Python requests上传文件实现步骤
工作中涉及到一个功能,需要上传附件到一个接口,接口参数如下: 使用http post提交附件 multipart/form-data 格式,url : http://test.com/flow/upl ...
- vue+elementui 同时有上传文件和批量上传文件功能,上传文件或批量上传文件后必须刷新才能再次上传文件
报错描述: 使用element-ui的上传文件组件写一个批量上传和上传文件,但是发现每次上传文件后或者批量上传文件后,不能再次上传文件或者批量上传文件.只有进入页面第一次点击上传文件或者批量上传文件才 ...
- 上传文件到github上的两种方式
写文章注册登录 首页 下载App × 两种方法上传本地文件到github hanyuntao 关注 2017.03.31 12:20* 字数 796 阅读 16682评论 7喜欢 45 自从使用git ...
- 解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题
解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题 在我们使用ServletFileUpload上传文件时,我们通常会获取其上传的文件名,然而当文件名包含中文时,便可能出 ...
- linux下adb传输文件,使用adb在电脑和手机间传文件,adb手机传文件
使用adb在电脑和手机间传文件,adb手机传文件 首先需要root手机. 然后,"Win + R",打开cmd窗口.下面以copy d:\1.txt到/system/目录为例说明 ...
- c winform 上传文件到mysql_WinForm上传文件至服务器
/// /// WebClient上传文件至服务器 /// /// 文件名,全路径格式 /// 服务器文件夹路径 /// public bool Upload(string localFilePath ...
- linux xshell上传文件夹,XShell上传文件到Linux服务器上
Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz. 首先你的Linux上需要安装安装lrzsz工具包,(如果没有安装请执行以下命令,安 ...
- 向服务器上传文件的命令,上传文件到远程服务器的命令
上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...
- Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf
java实实现现上上传传文文件件到到服服务务器器和和客客户户端端 这篇文章主要为大家详细介绍了java实现上传文件到服务器和客户端,具有一定的参考价值,感兴趣的小伙伴们 以参考一下 JAVA编写一个 ...
最新文章
- AttributeError: ‘NoneType‘ object has no attribute ‘group‘
- 闭包的介绍、构成条件、作用及示例代码
- 物理学在计算机领域的应用,物理学在计算机中的应用.doc
- 大数据 防范脱贫人口返贫_男性比女性多出3047万,从人口大数据看,房价会涨还是跌?...
- python中cursor属性_Python – AttributeError:’NoneType’对象没有属性’cursor’
- Oracle中根据表明获取对应表触发器名称
- codeforces1559 D2. Mocha and Diana (Hard Version)(并查集+启发式合并+随机化)
- js 短信验证码 6位数字
- Unity3DAI:寻路(1):A星寻路,在Unity上用C#代码实现。
- 如何将iTunes资料安全地备份到外部硬盘驱动器?
- gsp计算机管理系的功能,医药系统的GSP管理
- QAbstractItemModel+qtreeview
- 管螺纹如何标注_你所不知道的机械螺纹全面常识(分享篇),赶紧收藏下吧
- 10个国外设计网站(自学设计的童鞋建议收藏)
- geotools中等值面的生成与OL3中的展示
- Study13(从小白到大佬)
- 儒猿秒杀季!互联网大厂的IM即时通信系统项目实战
- 股票量化策略:数学天才们的印钞机
- 香港域名总量止跌回升 7月第一周新增4279个
- Android 9.0系统源码_SystemUI(一)SystemUI的启动流程