用Node.js批量上传文件

1,252 阅读1分钟

用Node.js批量上传文件

/**
 * @package 要引入的包 有 glob axios form-data
 */
const fs = require('fs');
const glob = require('glob');
const axios = require('axios');
const path = require('path');
const FormData = require('form-data');
const config = require('./utils/config');

// 文件的位置 
const entry = '../build/static/js';

const pattern = path.resolve(__dirname, entry + '/*.js') ;

// 区分环境
const NODE_ENV = process.argv[process.argv.length - 1] || 'production'

const env = config[NODE_ENV]

const files = glob.GlobSync(pattern).found

const formData = new FormData()

formData.append('appid', env.APPID);

files.forEach(element => formData.append('files', fs.createReadStream(element)) );

const url = `${env.AXIOS_BASE_URL}/api/upload`;

const reqHeaders = {
    headers: formData.getHeaders(),
    onUploadProgress: progressEvent => {
        let complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%'
        console.log(`\x1B[32m%s\x1B[0m`, '上传进度:')
        console.log('\x1B[34m%s\x1B[0m', complete)
    }
}
axios.post(url, formData, reqHeaders).then(res => {
    console.log(res.data)
	// 删除 上传的文件
    files.forEach(element => fs.unlinkSync(element));
}).catch((res) => {
    console.log(res)
})