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. man 手册--nc

    man 手册--nc NCAT(1) Ncat Reference Guide NCAT(1) NAME ncat - Concatenate and redirect sockets SYNOPSI ...

  2. git切换账号邮箱

    git config user.name 查看当前用户名 git config user.email 查看当前邮箱 git config --global user.name "用户名&qu ...

  3. HDU - 6242 Geometry Problem (几何,思维,随机)

    Geometry Problem HDU - 6242 Alice is interesting in computation geometry problem recently. She found ...

  4. 【1 封新邀请】想跟谷歌、七牛、kyligence 等大佬面对面的交流吗?

    2020 年 1 月 4 日 - 5 日,"ECUG Con 2020"大会将于杭州举行.本次大会以"ECUG For Future"为主题,围绕五大技术主题, ...

  5. TCP/IP分层图解

    网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合. T C P / I P通常被认为是一个四层协议系统,如图1 ...

  6. Lua 学习之基础篇三<Lua 字符串操作>

    Lua字符串可以使用以下三种方式表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. string = [["Lua"]] print("字符串 ...

  7. C# 加载显示ftp上图片方法

    ftp://用户名:密码@IP/路径 FTP的一种登陆方式  如ftp://sing:song@192.168.1.133/upload/pic/236.jpg

  8. C# List<T> 集合使用

    1.初始化集合 , ); , ); , ); ) { graham, emerson, mario }; 2. 添加元素 racers.Add(, )); racers.Add(, )); racer ...

  9. 016_STM32程序移植之_舵机

    STM32程序移植之舵机PWM测试 接线图如下: STM32引脚 舵机引脚 功能 GND GND 正极电源 具体看舵机的额定电压 PA6 PWM引脚 STM32引脚 CH340引脚 GND GND 3 ...

  10. 008_Linux驱动之_IO口的配置

    1. 测试:配置S3C2440的GPF4,5,6为输出 2. 测试IO的地址从芯片手册中获取以下资料 3. 从上面可以看出配置输出对应的设置是01=输出,那么对应位如:[9:8]需要设置成=01 4. ...