导入csv文件并发送到后端

导入csv文件并发送到后端,csv,redux,frontend,backend,nestjs,Csv,Redux,Frontend,Backend,Nestjs,我尝试创建一个redux react应用程序,用户可以在其中导入csv文件,该文件稍后存储在数据库中。现在我正在开发前端,我想创建一个代码,用户可以从他们的计算机上选择一个csv文件,然后将该文件发送到后端。我以前使用csvReader读取csv文件,但我不知道如何将数据发送到后端。我在后端使用nestJS。我想一次性发送整个csv文件,但我不知道如何解决这个问题。我是一个初学者:))你知道如何解决我的问题吗?我不能帮助你做出反应,但也许这个NestJS部分可以帮助你。您可以使用来配置api和设

我尝试创建一个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);
        },
     }),
    };
    
  • 导入最近创建的multerOption,并使用FileInterceptor和UploadedFile decorator获取文件

    @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);
            }
        });
    }