导入csv文件并发送到后端
我尝试创建一个redux react应用程序,用户可以在其中导入csv文件,该文件稍后存储在数据库中。现在我正在开发前端,我想创建一个代码,用户可以从他们的计算机上选择一个csv文件,然后将该文件发送到后端。我以前使用csvReader读取csv文件,但我不知道如何将数据发送到后端。我在后端使用nestJS。我想一次性发送整个csv文件,但我不知道如何解决这个问题。我是一个初学者:))你知道如何解决我的问题吗?我不能帮助你做出反应,但也许这个NestJS部分可以帮助你。您可以使用来配置api和设置存储路径导入csv文件并发送到后端,csv,redux,frontend,backend,nestjs,Csv,Redux,Frontend,Backend,Nestjs,我尝试创建一个redux react应用程序,用户可以在其中导入csv文件,该文件稍后存储在数据库中。现在我正在开发前端,我想创建一个代码,用户可以从他们的计算机上选择一个csv文件,然后将该文件发送到后端。我以前使用csvReader读取csv文件,但我不知道如何将数据发送到后端。我在后端使用nestJS。我想一次性发送整个csv文件,但我不知道如何解决这个问题。我是一个初学者:))你知道如何解决我的问题吗?我不能帮助你做出反应,但也许这个NestJS部分可以帮助你。您可以使用来配置api和设
// multer.ts
const excelMimeTypes = [
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/wps-office.xlsx',
'application/vnd.ms-excel',
];
export const multerOptions = {
fileFilter: (req: any, file: any, cb: any) => {
const mimeType = excelMimeTypes.find(im => im === file.mimetype);
if (mimeType) {
cb(null, true);
} else {
cb(new HttpException(`Unsupported file type ${extname(file.originalname)}`, HttpStatus.BAD_REQUEST), false);
}
},
storage: diskStorage({
destination: (req: any, file: any, cb: any) => {
const uploadPath = '/upload'; // use env var
if (!existsSync(uploadPath)) {
mkdirSync(uploadPath); // create if not exists
}
cb(null, uploadPath);
},
filename: (req: any, file: any, cb: any) => {
cb(null, file.originalname);
},
}),
};
@Post()
@UseInterceptors(FileInterceptor('file', multerOptions))
uploadFile(@UploadedFile() file) {
console.log(file) // call service or whathever to manage uploaded file.. handleFile in the example below..
}
handleFile(文件:any):承诺{
返回新承诺(异步(解析:(结果:任意)=>void,拒绝:(原因:任意)=>void):承诺=>{
试一试{
const workbook=XLSX.readFile(`${uploadLocation}/${file.filename}`);
解析(工作簿.工作表[工作表名称]);
}捕获(错误){
拒绝(错误);
}
});
}
handleFile(file: any): Promise<any> {
return new Promise(async (resolve: (result: any) => void, reject: (reason: any) => void): Promise<void> => {
try {
const workbook = XLSX.readFile(`${uploadLocation}/${file.filename}`);
resolve(workbook.Sheets[sheetName]);
} catch (error) {
reject(error);
}
});
}