zoukankan      html  css  js  c++  java
  • nodejs——向另一个服务器发送文件

    业务需要,需在客户本地建立一个服务,将本地的数据库文件发送到主服务器。

    下面是本地服务代码:

    var exec = require('child_process').exec;
    var request = require('request');
    var fs = require('fs');
    
    exec('./mysqlout.bat', function (err, stdout, stderr) {
    
        if (err) {
            console.error(err);
            return;
        }
        request.post('http://120.11.xx.19:3000/upload', {
            formData: {
                title: 'upload sqlfile',
                description: 'Sent on ' + new Date(),
                is_public: 1,
                sqlfiles: fs.createReadStream('f:/beijian.sql')
            },
            json: true
        }, function(err, res, body) {
            console.log('返回: ' + body);
            return;
        })
    });

    远程端主服务代码:

    //express框架
    
    app.js:
    //引入copyDB文件
    var copyDB = require('./routes/copyDB');
    //新建路由
    app.use('/upload', copyDB);
    
    
    codyDB.js:
    var express = require('express');
    var router = express.Router();
    var debug = require('debug')('Web:server');
    var MULTIPARTY = require('multiparty');
    var exec = require('child_process').exec;
    var FS = require('fs');
    var CONFIG = require('../config');
    
    var copyDB = function(req, res, next) { 
      //接收文件的方式用multiparty包
      var form = new MULTIPARTY.Form({
        uploadDir: "./appData/sqlFile/"// 接收文件后存储的路径,文件名是一串字符串,下面用fs.rename方法改名
      });
      form.parse(req, function(err, fields, files) {
        if (err) {
          debug("upload failed!" + err);
          res.send('upload failed!');
          return;
        } else {
          debug('upload success!');
          res.send('upload success!');
          var inputFile = files.sqlfiles[0];
          var uploadedPath = inputFile.path;
          var dstPath = './appData/sqlFile/' + 'new' + '.sql';
          FS.rename(uploadedPath, dstPath, function(renameerr) {
            if (renameerr) {
              debug('rename error: ' + err);
              return;
            } else {
              debug('rename ok');
            }
          })
        }
      });
    
    };
    
    router.post('/', copyDB);
    
    module.exports = router;
  • 相关阅读:
    iOS开发--UILabel可以显示
    网络编程之IO模型——IO模型比较分析
    网络编程之IO模型——异步IO
    网络编程之IO模型——多路复用IO
    网络编程之IO模型——非阻塞IO
    网络编程之IO模型——阻塞IO
    Linux基本命令
    Linux界面介绍
    Linux系统目录介绍
    Linux的前世今生
  • 原文地址:https://www.cnblogs.com/yourstars/p/6728765.html
Copyright © 2011-2022 走看看