apass-opensdk-hugong
Version:
飞书Apass低代码平台-飞书开放平台-相关的接口整合和常用的方法整合
89 lines (88 loc) • 2.93 kB
JavaScript
const fs = require('fs')
class File_{
#hg = null
constructor(hg){
this.#hg = hg
}
getCurrentTimeFolderName() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day}_${hours}-${minutes}-${seconds}`;
}
/**
* * 网络下载文件并上传到租户空间
* @param {*} url 网络文件地址
* @param {*} header 可选
* @returns
*/
async downloadFileToUpload(url, header = {}){
this.#hg.log4(`download url=${url}`)
const resp = await axios({ url, method: 'get', responseType: 'stream', headers: {...header} });
// 上传文件获取文件 token
const file_info = await application.resources.file.upload(resp.data);
this.#hg.log4('file_info',file_info)
return file_info
}
/**
* 下载租户空间的文件到环境tmp目录中
* @param {*} file_info { id, mime_type, name, ...}
* @param {*} file_path 存储地址可选,不填写则默认当前时间戳
* @returns
*/
async downloadFileToTmp(file_info, file_path){
this.#hg.log4(`download input=${ JSON.stringify(file_info)}`)
const _file_path = file_path || `/tmp/${Date.now()}.${ file_info.mime_type }`
await application.resources.file.download({id: file_info.id}, _file_path);
this.#hg.log4(`download success, path=` + _file_path)
return _file_path
}
/**
* 写入文件
* @param {*} data 写入的内容
* @param {*} fileName 存储地址
*/
saveDataToEnv(data,fileName){
fs.writeFileSync(fileName || `${ Date.now() }.txt`,data, { flag: 'a' })
}
/**
* 读取Excel文件(需要安装依赖:csv-parser)
* @param {*} path
* @param {*} callback(row) 每一行的回调
* @returns callback为null时,返回全部读取的结果list
*/
async csvRead(path,callback) {
const csv = require('csv-parser');
return await new Promise((resolve, reject) => {
const list = []
fs.createReadStream(path).pipe(csv())
.on('data', (row) => {
if(callback){
callback(row)
}else{
list.push(row)
}
})
.on('end', () => {
resolve(list)
})
.on('error',()=>{
reject()
});
})
}
async excelReader(path,callback){
const XLSX = require('xlsx');
const stream = fs.createReadStream(path.join(__dirname, 'example.xlsx'));
const workbook = XLSX.read(stream, { type: 'buffer' });
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
const data = XLSX.utils.sheet_to_json(worksheet);
console.log(data);
}
}
module.exports = File_