修复文件上传的问题。

This commit is contained in:
Kane Wang 2023-10-16 17:57:09 +08:00
parent 16df86e3a7
commit 0ad42d00a9
2 changed files with 59 additions and 38 deletions

View File

@ -45,21 +45,26 @@ public class ImportBIDataController
ReportType type = request.getReportType();
boolean hasCaption = request.isHasCaption();
int sheetIndex = request.getSheetIndex();
int importedCount = 0;
try
{
if ( type == ReportType.TelsalerAttachingRateReport )
{
importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption );
importedCount = importBITelsalerAttachingRate( filePath, sheetIndex, hasCaption );
}
else if ( type == ReportType.TelsalerRenewalRateReport )
{
importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption );
importedCount = importBITeslsalerRenewalRate( filePath, sheetIndex, hasCaption );
}
else if ( type == ReportType.DepartmentAttachingRenewalRateReport )
{
importBIDepartmentArchievement( filePath, sheetIndex, hasCaption );
importedCount = importBIDepartmentArchievement( filePath, sheetIndex, hasCaption );
}
response.setImportedCount(importedCount);
response.setSuccess(true);
response.setMessage("导入成功");
}
catch ( IOException error )
{
@ -67,7 +72,7 @@ public class ImportBIDataController
response.setSuccess( false );
response.setMessage( message );
logger.error(message, error);
logger.error( message, error );
}
catch ( InvalidFormatException error )
{
@ -75,7 +80,7 @@ public class ImportBIDataController
response.setSuccess( false );
response.setMessage( message );
logger.error(message, error);
logger.error( message, error );
}
catch ( PersistenceException error )
{
@ -83,17 +88,18 @@ public class ImportBIDataController
response.setSuccess( false );
response.setMessage( message );
logger.error(message, error);
logger.error( message, error );
}
return response;
}
private static void importBITelsalerAttachingRate( String filePath, int sheetIndex,
private static int importBITelsalerAttachingRate( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{
SqlSession session = null;
int importedCount = 0;
try
{
@ -110,6 +116,7 @@ public class ImportBIDataController
for ( BITelsalerAttachingRateRecord record : records )
{
mapper.insertTelsalerAttachingRateDataToDB( record );
importedCount++;
}
session.commit();
@ -123,14 +130,17 @@ public class ImportBIDataController
throw error;
}
return importedCount;
}
private static void importBITeslsalerRenewalRate( String filePath, int sheetIndex,
private static int importBITeslsalerRenewalRate( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{
ArrayList<BITelsalerRenewalRateRecord> records = null;
SqlSession session = null;
ImportBIArchievementDataMapper mapper = null;
int importedCount = 0;
try
{
@ -146,6 +156,7 @@ public class ImportBIDataController
for ( BITelsalerRenewalRateRecord record : records )
{
mapper.insertTelsalerRenewalRateDataToDB( record );
importedCount++;
}
session.commit();
@ -159,14 +170,17 @@ public class ImportBIDataController
throw error;
}
return importedCount;
}
private static void importBIDepartmentArchievement( String filePath, int sheetIndex,
private static int importBIDepartmentArchievement( String filePath, int sheetIndex,
boolean hasCaption ) throws PersistenceException, IOException, InvalidFormatException
{
ArrayList<BIDepartmentArchievementRecord> records = null;
SqlSession session = null;
ImportBIArchievementDataMapper mapper = null;
int importedCount = 0;
try
{
@ -180,6 +194,7 @@ public class ImportBIDataController
for ( BIDepartmentArchievementRecord record : records )
{
mapper.insertDepartmentAttachingRenewalRateDataToDB( record );
importedCount++;
}
session.commit();
@ -191,5 +206,7 @@ public class ImportBIDataController
session.rollback();
}
}
return importedCount;
}
}

View File

@ -2,8 +2,8 @@
* @Author: Kane
* @Date: 2023-01-22 23:11:26
* @LastEditors: Kane
* @LastEditTime: 2023-10-06 01:48:39
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/FileUpload/FileUpload.java
* @LastEditTime: 2023-10-16 10:51:36
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/fileupload/FileUpload.java
* @Description: 用于接受上传文件的Controller
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
@ -12,6 +12,9 @@
package com.cpic.xim.web.controllers.fileupload;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
@ -39,45 +42,46 @@ public class FileUpload
@RequestMapping( path = "/file-upload.do" )
@ResponseBody
public FileUploadResult getUploadFile( @RequestParam( "task-name" ) String taskName,
@RequestParam( "files" ) MultipartFile[] files, HttpServletRequest request )
@RequestParam( "files" ) MultipartFile file, HttpServletRequest request )
{
// session id用来创建临时目录避免重复
String sessionID = request.getSession().getId();
FileUploadResult result = new FileUploadResult();
Vector<String> fileNames = new Vector<String>();
int fileCount = files.length;
// 防御验证
if ( files.length == 0 )
{
result.setSuccess( false );
result.setMessage( "此接口用于上传文件!" );
return result;
}
result.setSuccess( true );
result.setMessage( "上传成功!" );
for ( MultipartFile file : files )
// 检查文件长度如果为0则跳过
if ( file.isEmpty() )
{
result.setSuccess( false );
result.setMessage( "不允许上传空文件。" );
}
else
{
// 检查文件长度如果为0则跳过
if ( file.isEmpty() )
{
continue;
}
// 保存文件到临时目录
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
String filePath =
request.getServletContext().getRealPath( "/temp/upload/" + sessionID );
String fileName = file.getOriginalFilename();
String fileName = String.valueOf(milliSecond) + file.getOriginalFilename();
File destFile = new File( filePath, fileName );
// 把上传文件的绝对路径保存返回给前端
fileNames.add( destFile.getAbsolutePath() );
}
try
{
file.transferTo( destFile );
// 把上传文件的绝对路径保存返回给前端
fileNames.add( destFile.getAbsolutePath() );
result.setFileList( fileNames );
result.setSuccess(true);
result.setMessage("上传成功");
result.setFileList(fileNames);
}
catch ( IOException error )
{
result.setSuccess(false);
result.setMessage("上传失败,原因:" + error.getMessage());
}
}
return result;
}