java后台服务器向Nodejs客户端发送压缩包文件

时间:2019-12-23
本文章向大家介绍java后台服务器向Nodejs客户端发送压缩包文件,主要包括java后台服务器向Nodejs客户端发送压缩包文件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

java代码:

Map map=new HashMap();
 try {
                //获取本地文件转换成字符换
                File file = new File(apppath);//"D:/upload/20191223095503_2.zip"
                FileInputStream inputstream = new FileInputStream(file);//本地文件的输入流
                String fileStr = "";//内网传送数据,file的转byte的字符串
                BASE64Encoder encoder = new BASE64Encoder();
                while ((b = inputstream.read(temp)) != -1) {
                    fileStr += encoder.encode(temp);
                }
                inputstream.close();
                map.put("appFileStr",fileStr);
            } catch (IOException e) {
                e.printStackTrace();
            }
 String result= HttpClientUtil.callHttpPost(ip,port,"reciveFile",map);//ip:客户端IP;port:客户端服务的端口;reciveFile:客户端服务接收文件流的接口;map:存放文件流;HttpClientUtil:是我们自己封装的发送http post请求的工具类;

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());
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;
    }

}

原文地址:https://www.cnblogs.com/luzhanshi/p/12084475.html