首先react中使用antd的upload組件
//上傳文件設置
let _this = this
const uploadprops = {
name: 'file',
action: '請求路徑',
headers: {
authorization: 'authorization-text',
},
onChange(info) {//獲取返回結果
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (info.file.status === 'done') {
let response = info.file.response
if (!response.success) {
message.error(response.message || `${info.file.name} 導入失敗。`)
info.file.name = ''
return
}
message.success(`${info.file.name} 導入成功。` || '');
_this.search() //獲取列表
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 上傳失敗。`);
}
}
};
koa2中代碼
- 首先在app.js中引入 引入前先npm i …
- 上圖高亮區域就是 注意最好按照這個順序
路由中如下代碼
router.post('/api/drxsl', async (ctx, next) => {
//上傳單個文件
const file = ctx.request.files.file; // 獲取上傳文件
const reader = fs.createReadStream(file.path); // 創建可讀流 此處需引入 fs模塊
const ext = file.name.split('.').pop(); // 獲取上傳文件擴展名
const upStream = fs.createWriteStream(`./public/upload/SCWJ.${ext}`); // 創建可寫流
reader.pipe(upStream).on('close', async ()=>{
let excelFilePath = './public/upload/SCWJ.xlsx';
// 讀取excel中所有工作表的數據
let list = nodeXlsx.parse(excelFilePath); //此處需要下載中間件const nodeXlsx = require('node-xlsx')
// 獲取excel中第一個工作表的數據
let data = list[0].data;
let result = [];
// 字段過濾
_.forEach(data.slice(1), (d) => { //此處需下載lodash
result.push(['10114400010000000195', d[0]?'00'+d[0]:'',d[1]?d[1]:'', d[2]?d[2]:'', d[3]?d[3]:'', d[4]?d[4]:'', d[5]?d[5]:'',d[6]?d[6]:'',d[7]?d[7]:'0.03',d[8]?d[8]:'' ]);
});
let addkpxmvalues = result
let addkpxmxxjg = await userService.setkpxmxx([addkpxmvalues]) //此處就是向mysql中插入多條內容
var filePath = './public/upload/SCWJ.xlsx';
fs.unlinkSync(filePath); //讀取完文件 並插入到數據庫中後刪除文件
})
ctx.body = {
code: 200,
message: '上傳成功',
success:true
}
});