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文档
猜你喜欢
转载自blog.csdn.net/sinat_41794875/article/details/109103272
今日推荐
周排行