UNPKG

apass-opensdk-hugong

Version:

飞书Apass低代码平台-飞书开放平台-相关的接口整合和常用的方法整合

89 lines (88 loc) 2.93 kB
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_