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 // } // }) // }) } }
nodejs后端批处理图片上传到指定服务器,接收处理结果并写入TXT文档
最新推荐文章于 2024-09-09 18:35:55 发布