Scenarios like importing bank statement(BAI2) where single file comes from  bank for different bank account ,you have to spilt file in to different file and import those in respective bank account. Following piece of code is going to help you to store files in blob storage and get the file id , name etc. for use  later to spilt those file and import those in bank account.

You can utilize existing data management framework capabilities for this purpose, more information is present  on the this link.

Following piece of code helps you to upload the file to blob storage and store file ID , URL and name for later use. You can directly get file from bank SFTP and upload it to blob storage.

List bankFiles;
private void uploadFilesToBlobStorage(Filename      _downlodedFile)
        InteropPermission                       interopPermission;
        System.IO.Stream                        fileStream;
        FileUploadTemporaryStorageResult        fileUploadResult;
        Filename                                uploadFileName;
        str                                     uploadFileURL;
        SharedServiceUnitFileID                 uploadFileID;

        fileStream= new System.IO.FileStream(_downlodedFile, System.IO.FileMode::Open, System.IO.FileAccess::Read);

        container splitFileName = Docu::splitFilename(_downlodedFile);

        fileUploadResult = File::SendFileToTempStore_GetResult(fileStream, conPeek(splitFileName, 1) + "." + conPeek(splitFileName, 2));

        if (fileUploadResult != null && fileUploadResult.getUploadStatus())
            uploadFileURL = fileUploadResult.getDownloadUrl();
            uploadFileName = fileUploadResult.getFileName();
            uploadFileID = fileUploadResult.getFileId();

            bankFiles.addEnd([uploadFileID, uploadFileName]);           

Once you  upload the file the next part is splitting and importing this  file in respective company . Following piece of code is helpful in splitting file  by account number and import those in respective bank account by company. You can apply transforms as well , if needed.

ListEnumerator bankFileEnumerators = bankFiles.getEnumerator();

 while (bankFileEnumerators.moveNext())
	[bankStatementToImportFileId, bankStatementFileName] = bankFileEnumerators.current();

DMFLocalFilePath transformedFile = this.applyTransforms(bankStatementToImportFileId, definitionGroup);

            SharedServiceUnitURL transformedFileLocation = DMFStagingWriter::getSharedFilePath(transformedFile);
            BankStatementFileImportProcessor fileImportProcessor = this.initializeFileImportProcessor();
            BankStatementFileImportProcessorResult fileImportProcessorResult = fileImportProcessor.process(transformedFileLocation, '');
            List bankStatementsByBankAccountTableAndFileId = fileImportProcessorResult.parmBankStatementsByBankAccountTableAndFileId();
ListEnumerator bankStatementsByFileAndBankAccountEnumerator = bankStatementsByBankAccountTableAndFileId.getEnumerator();
            while (bankStatementsByFileAndBankAccountEnumerator.moveNext())
                BankStatementUploadData uploadData = bankStatementsByFileAndBankAccountEnumerator.current();
                BankAccountTable bankAccountTable = uploadData.parmBankAccountTable();
                bankStatementToImportFileId = uploadData.parmFileId();

                // Check if bank reconciliation is enabled
                        this.bankAccount = bankAccountTable.AccountID;

The above piece of code shows only how to spilt the file to be imported on different bank accounts not importing in to bank account.