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客户端发送压缩包文件的更多相关文章

  1. 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式

    原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6439313.html Java后台实现极光推送有两种方式,一种是使用极光推送官方提供的推送请 ...

  2. java后台通过Servlet给用户发送手机短信验证码,第一次写勿喷,欢迎转载

    短信验证码跟自己在Servlet画的验证码不一样,我们不用管短信验证码是怎么产生的,我们只需要关注如何调用短信验证码,在短信验证码里面添加 自己需要的随机数或者其他的内容. 现在直接上流程 第一步找一 ...

  3. java后台服务器实现极光推送

    一.添加极光推送所需要的jar包,项目使用的maven,所以只需要在pom文件里添加jar包依赖 <dependency> <groupId>cn.jpush.api</ ...

  4. Java TCP服务端向客户端发送图片

    /** * 1.创建TCP服务端,TCP客户端 * 2.服务端等待客户端连接,客户端连接后,服务端向客户端写入图片 * 3.客户端收到后进行文件保存 * @author Administrator * ...

  5. idea + springboot 的java后台服务器通过小米推送

    public class XiaomiPush { // 1.小米推送(我只推送Android且只应用regId发起推送,所以下面只有推送Android的代码 private static final ...

  6. java后台服务器启动脚本

    最近由于经常在项目上线或者调试中启动服务,由于要设置环境变量这些,所以为了方便写了个启动脚本,希望能够帮助大家,也算是给自己做个小笔记: example_project_start.sh: # /bi ...

  7. Java获取服务器IP和客户端IP

    服务器IP: String addr = InetAddress.getLocalHost().getHostAddress(); 说明:很明显上面是没考虑到服务器有多个iP的情况. 客户顿啊IP: ...

  8. java后台简单从腾讯云下载文件通知前端以附件的形式保存

    腾讯云对象存储和阿里云差不多 这是我的配置 /** * 腾讯云client * @return COSClient */ public static COSClient getCOSClient() ...

  9. Java以邮件附件的方式发送excel文件

    String to = "xxx@qq.com"; // 收件人的QQ邮箱 String from = "xxx@qq.com"; // 发件人的QQ邮箱 St ...

随机推荐

  1. mysql 忘记/修改数据库密码

    window mysql 修改密码 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = ...

  2. 预处理、编译、汇编、链接、启动代码、相关command

    被忽略的过程 对于C这种编译性语言,我们平时编译时,不管是通过IDE图形界面,还是通过命令行,总感觉编译一下就完成了,然后就得到了针对某OS和某CPU的二进制可执行文件(机器指令的文件).但是实际上在 ...

  3. PAT Basic 1077 互评成绩计算 (20 分)

    在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平 ...

  4. sql 发生死锁

    SELECT request_session_id spid , OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tr ...

  5. layer弹出框中icon数字参数说明

    前言icon参数为0,如下代码: layer.msg(}); 运行结果如图: icon参数为1,如下图 icon参数为2,如下图: icon参数为3,如下图: icon参数为4,如下图: icon参数 ...

  6. nginx 缓存区太小导致后台Connection reset by peer 报错

    问题概述:图片bit 64生成数据流太大,导致小程序分享弹窗的二维码图片生成失败 后台报错: 排查: Client------>nginx------->h5------>nginx ...

  7. 阿里云申请免费SSL证书,并配置到Tomcat,实现https访问

    第一步:阿里云免费https证书安装  https://jingyan.baidu.com/article/fdffd1f8619481f3e98ca196.html 第二步:阿里云申请免费SSL证书 ...

  8. 11、Spring Boot 2.x 集成 HBase

    1.11 Spring Boot 2.x 集成 HBase 完整源码: Spring-Boot-Demos

  9. SIGAI机器学习第六集 决策树

    讲授决策树的基本概念,分类与回归树的原理,决策树的表示能力,决策树的训练算法,寻找最佳分裂的原理,叶子节点值的标记,属性缺失与替 代分裂,决策树的剪枝算法,决策树应用. 非常直观和易于理解的机器学习算 ...

  10. Find a multiple POJ - 2356 【鸽巢原理应用】

    Problem DescriptionThe input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). E ...