package com.sz.kcygl.common.util; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class FileUpload { /** * 模拟form表单的形式 ,上传文件 以输出流的形式把文件写入到url中,然后用输入流来获取url的响应 * * @param url 请求地址 form表单url地址 * @param filePath 文件在服务器保存路径 * @return String url的响应信息返回值 * @throws IOException */ public static String send(String url, String filePath) throws IOException { String result = null; File file = new File(filePath); if (!file.exists() || !file.isFile()) { throw new IOException("文件不存在"); } /** * 第一部分 */ URL urlObj = new URL(url); // 连接 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); String mediaId = jsonObj.getString("media_id"); return mediaId; } public static void main(String[] args) throws IOException { String filePath = "D:/tomcat/apache-tomcat-6.0.37/webapps/Allianture_frame/upload/test3_20140117094014814.jpg"; String sendUrl = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=yeQEu_OrXQanGC_G56BZ7IKJDCQCaO0ryDWKX2N2JDzGRGuiZACTGjsQXW-S-K1fgm_MViG_R5AwIEBhKKCNmUevg0H3ksfzlIfkFcP1y8g2st2LYwloL_iPqhedlT5_Z1zSM2mZSmu6cI54sayMPw&type=image"; String result = null; FileUpload fileUpload = new FileUpload(); result = fileUpload.send(sendUrl, filePath); System.out.println(result); } }
相关推荐
主要为大家详细介绍了java实现上传网络图片到微信临时素材,网络图片上传到微信服务器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2、文件有分为两种上传文件方式:第一种上传到java本地服务器,访问Controller为IndexController文件;第二种是上传到文件服务器,NginxContoller和UploadController都是实现这个功能。区别是NginxController是分别...
1.4 上传素材文件 1.5 获取素材文件 1.6 获取应用素材总数以及每种类型素材的数目 1.7 创建菜单 1.8 删除菜单 1.9 获取菜单列表 2、微信公众号服务端调用方法java源码实现 2.1 在回调模式下验证服务器接口地址 2.2 ...
微信小程序:小程序上传用户图像至服务器,服务器处理后,小程序下载图片并保存到本地。
基于Java开发的chatgpt微信聊天小程序。java编写服务器,实现chatgpt接口的调用+源代码+文档说明 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源...
微信小程序文件上传客户的 java服务器端源码
微信小程序文件上传客户的+java服务器端源码.rar,是一个包括了小程序端的代码,和java服务器端代码。
asp.net core3.1 webAPI对接企业微信上传临时素材,返回media_id. 来自于实际项目;
31. 获取微信服务器IP 8:43 32. 让你的公众号出现在附近的人 8:38 33. 微信连WIFI的原理及实现 10:41 34. 摇一摇周边的原理及实现 19:32 课程介绍课程目录课程评价 1 公众号无法响应的几种情况 | 7:36 2 去除扰人...
微信小程序录音文件.silk上传服务器并且转换mp3格式。本教程将采用nodejs/silk_v3_decoder.exe/ffmpeg三个东西配合使用。本教程是在windows下通过。 本教程包括下面几个步骤: 1、nodejs安装等一些基本使用就不说了...
java实现get请求post请求,文件传输 /** ... * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return 返回微信服务器响应的信息 */
项目场景: 我在调用微信小程序的获取体验二维码,结果返回的是二进制文件,所以需要后端进行处理:接收二进制文件--二进制文件上传到文件服务器(1本地 2七牛云 3阿里云) 代码中都是可用的方法
开发环境:Java开发工具:IntelliJ IDEA、Eclipse等Web框架:Spring Boot、Spring MVC等数据库:MySQL、Oracle等关系型数据库版本控制:Git部署方式:将项目打包成ZIP文件,上传至服务器,通过命令行解压并启动项目...
后续更新成base64数据保存到数据库,直接base64转换成图片保存在服务器,数据库存储相关信息,下载或者查看的时候直接调用相对路径的文件即可。 毕竟base64的数据保存到数据库太影响查询了。另外在存储文件的时候...
SpringBoot+html实现h5录音上传到后台,html录音是从网上下的,后台接收是自己写的,使用的SpringBoot框架
1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...
开发技术:微信小程序客户端 + Java后台服务器端 + mysql数据库 项目一共2个身份,用户和管理员。学生在小程序客户端绑定手机号登录后,可以首页查看新闻公告信息,可以查询课程信息,用户选择自己的课程开始提交...
上传代码:上传到腾讯服务器,提交审核必经步骤。上传代码时可以填写版本号和备注信息。 资源文件:一般可以在资源文件进行对应项目的文件目录的断点调试。 显示远程调试:手机端和PC端开发工具联调对用户而言是非常...
4. 开发环境配置文件:包括服务器配置、数据库连接配置等。 五、二次开发与定制 该系统具有较高的可扩展性和可维护性,便于二次开发与定制。开发者可以根据自己的需求,修改源代码以满足特定业务场景的需求。同时...
因为数据流不能直接传给前端,只好把buffer流转成图片保存在服务器上,没办法啊~ 废话不多说上代码 public static string Api_Post(string postUrl, string postData, WebHeaderCollection header = null,bool ...