//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

企业微信上传文件到服务器,上传素材到腾讯企业微信服务器相关推荐

  1. Confluence wiki上传文件时报“不能上传文件至Confluence中,服务器可能已失效”

    Confluence wiki 上传文件时报"不能上传文件至Confluence中,服务器可能已失效"的解决方法. 一. 后台管理修改配置 首先用管理员登陆Confluence后台 ...

  2. python requests 上传文件_Python requests上传文件实现步骤

    工作中涉及到一个功能,需要上传附件到一个接口,接口参数如下: 使用http post提交附件 multipart/form-data 格式,url : http://test.com/flow/upl ...

  3. vue+elementui 同时有上传文件和批量上传文件功能,上传文件或批量上传文件后必须刷新才能再次上传文件

    报错描述: 使用element-ui的上传文件组件写一个批量上传和上传文件,但是发现每次上传文件后或者批量上传文件后,不能再次上传文件或者批量上传文件.只有进入页面第一次点击上传文件或者批量上传文件才 ...

  4. 上传文件到github上的两种方式

    写文章注册登录 首页 下载App × 两种方法上传本地文件到github hanyuntao 关注 2017.03.31 12:20* 字数 796 阅读 16682评论 7喜欢 45 自从使用git ...

  5. 解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题

    解决ServletFileUpload上传文件时,获取上传文件名出现中文乱码问题 在我们使用ServletFileUpload上传文件时,我们通常会获取其上传的文件名,然而当文件名包含中文时,便可能出 ...

  6. linux下adb传输文件,使用adb在电脑和手机间传文件,adb手机传文件

    使用adb在电脑和手机间传文件,adb手机传文件 首先需要root手机. 然后,"Win + R",打开cmd窗口.下面以copy d:\1.txt到/system/目录为例说明 ...

  7. c winform 上传文件到mysql_WinForm上传文件至服务器

    /// /// WebClient上传文件至服务器 /// /// 文件名,全路径格式 /// 服务器文件夹路径 /// public bool Upload(string localFilePath ...

  8. linux xshell上传文件夹,XShell上传文件到Linux服务器上

    Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz. 首先你的Linux上需要安装安装lrzsz工具包,(如果没有安装请执行以下命令,安 ...

  9. 向服务器上传文件的命令,上传文件到远程服务器的命令

    上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  10. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf

    java实实现现上上传传文文件件到到服服务务器器和和客客户户端端 这篇文章主要为大家详细介绍了java实现上传文件到服务器和客户端,具有一定的参考价值,感兴趣的小伙伴们 以参考一下 JAVA编写一个 ...

最新文章

  1. AttributeError: ‘NoneType‘ object has no attribute ‘group‘
  2. 闭包的介绍、构成条件、作用及示例代码
  3. 物理学在计算机领域的应用,物理学在计算机中的应用.doc
  4. 大数据 防范脱贫人口返贫_男性比女性多出3047万,从人口大数据看,房价会涨还是跌?...
  5. python中cursor属性_Python – AttributeError:’NoneType’对象没有属性’cursor’
  6. Oracle中根据表明获取对应表触发器名称
  7. codeforces1559 D2. Mocha and Diana (Hard Version)(并查集+启发式合并+随机化)
  8. js 短信验证码 6位数字
  9. Unity3DAI:寻路(1):A星寻路,在Unity上用C#代码实现。
  10. 如何将iTunes资料安全地备份到外部硬盘驱动器?
  11. gsp计算机管理系的功能,医药系统的GSP管理
  12. QAbstractItemModel+qtreeview
  13. 管螺纹如何标注_你所不知道的机械螺纹全面常识(分享篇),赶紧收藏下吧
  14. 10个国外设计网站(自学设计的童鞋建议收藏)
  15. geotools中等值面的生成与OL3中的展示
  16. Study13(从小白到大佬)
  17. 儒猿秒杀季!互联网大厂的IM即时通信系统项目实战
  18. 股票量化策略:数学天才们的印钞机
  19. 香港域名总量止跌回升 7月第一周新增4279个
  20. Android 9.0系统源码_SystemUI(一)SystemUI的启动流程

热门文章

  1. 笔记本内存2槽开机风扇转一会即关机,已解决
  2. opencv的安装及使用
  3. 工作就是愉快的带薪学习
  4. 如何将Outlook中邮件转成PDF?
  5. TestCaseManageSystem 自动化解决方案 [开源项目] 基于 AgileTC 的测试用例自动化框架完美版
  6. PHP对接抖音小店接口的简单封装以及请求
  7. 如何制作App隐私政策html
  8. 资源分享系统|基于Springboot+vue实现资源分享系统
  9. eclipse新版本Dynamic web project的文件夹组成
  10. 西门子、美的、海尔,电器巨头的洗碗机之争