nodejs后端批处理图片上传到指定服务器,接收处理结果并写入TXT文档

var request = require('request');

var fs = require('fs');

class batchProcessing {

  constructor() {

    this.server_url = 'https://XXXXXXX'

  }


 

  readFileList(path, filesList) {

    let self = this

    var files = fs.readdirSync(path)

    files.forEach(function (itm, index) {

     var stat = fs.statSync(path + itm)

     if (stat.isDirectory()) {

      //递归读取文件

      self.readFileList(path + itm + "/", filesList)

     } else {

      var obj = {}

      obj.path = path

      obj.filename = itm

      filesList.push(obj);

     }

    })

  }

  getFileList(path) {

    var filesList = [];

    this.readFileList(path, filesList);

    return filesList;

  }

  post(file_path) {

    let self = this

    return new Promise((resolve, reject) => {

      try {

        if((file_path.indexOf('jpg') === -1) && (file_path.indexOf('JPG') === -1)) {

          reject("UNSUPPORTED")

        } else {

          var options = {

            'method': 'POST',

            'url': self.server_url,

            formData: {

              'image': {

                'value': fs.createReadStream(file_path),

                'options': {

                  'filename': '',

                  'contentType': null

                }

              },

            }

        }

        request(options, function (error, response) {

          if (error) {

            reject('POST_FAILED');

          } else {

            console.log(response.body)

            let res = JSON.parse(response.body)

            let errcode = res['errcode'];

            if (errcode!== 0) {

                reject("FALSE");

            }

            else {

                let result = res["result"];

                resolve(result);

            }

          }

        })

      }

    }

      catch (e) {

        console.log(e)

        reject("POST_FAILED");

      }

    })

  }

 succ_check(res, image_info) {

    let self = this

    console.log("succ check")

      let valid = XXXXXXXXX

      if(valid ){

        let file_path = image_info.path + 'result.txt'

        let data = "TRUE: " + image_info.filename +'\r\n'

        fs.open(file_path, 'a', (err, fd) => {

          if (err) throw err;

          fs.appendFile(fd, data, 'utf8', (err) => {

            fs.close(fd, (err) => {

              if (err) throw err;

            });

            if (err) throw err;

          });

        });

      }

      else{

        console.log('WRITE FAILED')

      }

  }

  fail_check(error, image_info) {

      let self = this

      console.log("fail check")

      let file_path = image_info.path + 'result.txt'

      let data = 'FALSE: ' + image_info.filename + '\r\n'

      fs.open(file_path, 'a', (err, fd) => {

        if (err) throw err;

        fs.appendFile(fd, data, 'utf8', (err) => {

          fs.close(fd, (err) => {

            if (err) throw err;

          });

          if (err) throw err;

        });

      });

  }

  err_check(error, image_info) {

      let self = this

      console.log("error check")

      let file_path = image_info.path + 'result.txt'

      let data =  error + ': ' + image_info.filename + '\r\n'

      fs.open(file_path, 'a', (err, fd) => {

        if (err) throw err;

        fs.appendFile(fd, data, 'utf8', (err) => {

          fs.close(fd, (err) => {

            if (err) throw err;

          });

          if (err) throw err;

        });

      });

  }

}

// export default batchingProcessing

var processing = new batchProcessing()

var srclist = processing.getFileList("./test/");

batchprocess()

async function batchprocess() {

  //同步处理

  let item = null

  for(let index = 0; index < srclist.length; index ++) {

    item = srclist[index]

    console.log(item);

    let path = item.path + item.filename

    try {

      let res =  await processing.post(path)

      processing.succ_check(res, item)

    } 

    catch(error) {

      switch(error) {

        case "POST_FAILED": {

          processing.err_check(error, item)

          break

        }

        case "FALSE": {

          processing.fail_check(error, item)

          break

        }

        case "UNSUPPORTED": break

      }

    //异步处理

    // srclist.forEach(function (item, index){ 

    // processing.post(path).then((res) => {

    //     processing.succ_check(res, item)

    // }).catch((error) => {

    //   switch(error) {

    //     case "POST_FAILED": {

    //       processing.err_check(error, item)

    //       break

    //     }

    //     // case "READ_FAILED": {

    //     //   processing.err_check(error, item)

    //     //   break

    //     // }

    //     case "FALSE": {

    //       processing.fail_check(error, item)

    //       break

    //     }

    //     case "UNSUPPORTED": break

    //   }

    // })

  // })
}

}




 

猜你喜欢

转载自blog.csdn.net/sinat_41794875/article/details/109103272