• 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;
        }
    
    }
  • 相关阅读:
    设计模式(十)—— 装饰者模式
    设计模式(九)—— 组合模式
    设计模式(八)—— 桥接模式
    设计模式(七)—— 适配器模式
    LINQ to XML
    设计模式(六)—— 单例模式
    设计模式(五)—— 原型模式
    Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案
    基于.Net平台常用的组件和框架整理
    Javascript中最常用的55个经典技巧(转)
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/12084475.html
Copyright © 2020-2023  润新知