java后台服务器向Nodejs客户端发送压缩包文件
java代码:
Map map = new HashMap();
String fileStr = getFileStr(path);//这里path就是我们服务器上的文件存放路径
map.put("appFileStr", fileStr);
String result = HttpClientUtil.callHttpPost(ip, port, "reciveFile", map);
public String getFileStr(String path) {//这里是我们封装好的读取文件获得的并经过BASE64加密之后的字符串的方法
String resultStr = "";
try {
int b;
File file = new File(path);
byte[] temp = new byte[(int) (file.length())];
FileInputStream inputstream = new FileInputStream(file);//本地文件的输入流
BufferedInputStream in = new BufferedInputStream(inputstream);
StringBuffer fileStr = new StringBuffer();
BASE64Encoder encoder = new BASE64Encoder();
while ((b = in.read(temp)) != -1) {
fileStr.append(encoder.encode(temp));
}
inputstream.close();
resultStr = fileStr.toString();
} catch (IOException e) {
e.printStackTrace();
}
return resultStr;
}
Node.js客户端代码:
/**
* Created by Administrator on 2019/12/23.
*指尖敲打着世界 ----一个阳光而又不失帅气的少年!!!.
*/
var express=require('express'); /*引入*/
var bodyParser = require('body-parser');
var fs=require("fs");
var app=new express(); /*实例化*/
//配置body-parser中间件
// parse application/x-www-form-urlencoded//处理表单数据
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json //处理json数据
app.use(bodyParser.json({limit : "2100000kb"}));
app.post('/reciveFile',function(req,res){ var app = new Buffer.from(req.body.appFileStr, 'base64'); fs.writeFileSync("D:/upload/writeFileTest.zip",app);//注意:writeFile写入的文件zip打不开,具体原因不明,同道高人如果知晓,希望能够指点一二 res.send({retMsg: '收到发送文件流请求,正在接收', retCode: "1"}); }) app.listen(8089);
附录HttpClientUtil代码:
package com.yxjr.common.utils; import net.sf.json.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils; import java.io.UnsupportedEncodingException;
import java.util.Map; public class HttpClientUtil {
//post提交调用方法
public static String callHttpPost(String hostIP, int port, String actionName, Map<String,String> paramsMap)
throws UnsupportedEncodingException {
JSONObject resultJSon = new JSONObject();
String callbackResult = "";
System.err.println("请求参数是: IP" + hostIP + " actionName:" + actionName + " params:" + paramsMap);
HttpClient httpClient = new DefaultHttpClient();
StringBuilder url = new StringBuilder("http://");
if (hostIP != null && !"".equals(hostIP) && !"".equals(actionName) && actionName != null) {
url.append(hostIP).append(":").append(String.valueOf(port)).append("/").append(actionName);
}
// if (hostIP != null && !"".equals(hostIP) && !"".equals(actionName) && actionName != null) {
// url.append(hostIP).append(":").append(String.valueOf(port)).append("/")
// .append(baseUrl).append("/").append(actionName);
// }
System.out.println(url);
String str ="";
if(paramsMap!=null && paramsMap.size()!=0){
str = JSONObject.fromObject(paramsMap).toString();
}
System.err.println("请求参数为:"+ str);
HttpPost httpPost = new HttpPost(url.toString());
StringEntity entity = new StringEntity(str, "utf-8");
//entity.setContentEncoding("utf-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
try {
HttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
String entityString = EntityUtils.toString(response.getEntity());
System.err.println("请求返回码为:"+ String.valueOf(statusCode)+" 返回结果为:" +entityString);
if(statusCode==200 ){
callbackResult = entityString;
}else{
resultJSon.put("retCode",-1);
resultJSon.put("retMsg","请求异常,请检查请求内容");
resultJSon.put("resultCode",statusCode);
callbackResult = resultJSon.toString();
}
} catch (Exception e) {
System.err.println("客户端连接异常:"+e.getMessage());
resultJSon.put("retCode",-2);
resultJSon.put("retMsg","连接异常,请检查客户端机服务是否正常开启");
resultJSon.put("resultCode",500);
callbackResult = resultJSon.toString();
e.printStackTrace();
}
return callbackResult;
} }
java后台服务器向Nodejs客户端发送压缩包文件的更多相关文章
- 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6439313.html Java后台实现极光推送有两种方式,一种是使用极光推送官方提供的推送请 ...
- java后台通过Servlet给用户发送手机短信验证码,第一次写勿喷,欢迎转载
短信验证码跟自己在Servlet画的验证码不一样,我们不用管短信验证码是怎么产生的,我们只需要关注如何调用短信验证码,在短信验证码里面添加 自己需要的随机数或者其他的内容. 现在直接上流程 第一步找一 ...
- java后台服务器实现极光推送
一.添加极光推送所需要的jar包,项目使用的maven,所以只需要在pom文件里添加jar包依赖 <dependency> <groupId>cn.jpush.api</ ...
- Java TCP服务端向客户端发送图片
/** * 1.创建TCP服务端,TCP客户端 * 2.服务端等待客户端连接,客户端连接后,服务端向客户端写入图片 * 3.客户端收到后进行文件保存 * @author Administrator * ...
- idea + springboot 的java后台服务器通过小米推送
public class XiaomiPush { // 1.小米推送(我只推送Android且只应用regId发起推送,所以下面只有推送Android的代码 private static final ...
- java后台服务器启动脚本
最近由于经常在项目上线或者调试中启动服务,由于要设置环境变量这些,所以为了方便写了个启动脚本,希望能够帮助大家,也算是给自己做个小笔记: example_project_start.sh: # /bi ...
- Java获取服务器IP和客户端IP
服务器IP: String addr = InetAddress.getLocalHost().getHostAddress(); 说明:很明显上面是没考虑到服务器有多个iP的情况. 客户顿啊IP: ...
- java后台简单从腾讯云下载文件通知前端以附件的形式保存
腾讯云对象存储和阿里云差不多 这是我的配置 /** * 腾讯云client * @return COSClient */ public static COSClient getCOSClient() ...
- Java以邮件附件的方式发送excel文件
String to = "xxx@qq.com"; // 收件人的QQ邮箱 String from = "xxx@qq.com"; // 发件人的QQ邮箱 St ...
随机推荐
- el-table——可编辑拖拽转换csv格式的表格
<!--可拖拽的表格:表格内容+行参数+按钮名称(对话框标题)--> <template> <div> <el-button size="mini& ...
- CSS 样式表{二}
1 选择器的优先级 选择器的优先主要考虑选择器的权重 可以将各种选择器的权重以数值来表示,数值越大,优先级越高 选择器 权重值 标签selector 1 类选择器 10 ID选择器 100 行内样式 ...
- [杭电oj][1005]Number Sequence
sky同学在努力地刷题..,在这题卡住了,于是一起研究了一下... 这题本身挺简单的,(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) m ...
- 关于operator void* 操作符
在<大规模C++程序设计>这本书中谈到了迭代器模式. 他提供了这样的一个迭代器的例子 这个for循环中判断终止的写法,有点意思,做一下记录. 这个地方的本质是这样的:C++ 编译器 ...
- vimrc config and NERDTree
nmap <C-N> :tabnext<CR> 下载和配置 NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.com/scrooloo ...
- 使用Python进行3DES加密-pyDes
pyDes.py源码 ############################################################################# # Documenta ...
- VS 运行库MT、MD的区别
https://www.jianshu.com/p/f43afc1d5946 VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT).多线程调试(/MTd).多线程 ...
- adb连接各模拟器端口
天天模拟器 adb connect 127.0.0.1:6555 网易MuMu adb connect 127.0.0.1:5555
- Codeforces Round #584 B. Koala and Lights
链接: https://codeforces.com/contest/1209/problem/B 题意: It is a holiday season, and Koala is decoratin ...
- csv测试类。用起来,就是那么简单。每个单元格都是以逗号分隔
package com.hyxt.wxpay.util; import java.io.File; import java.util.ArrayList; import java.util.List; ...