实现思路
创建2个实体类。
1、上传文件类UpLoadDetailPO,用来存放上传文件的基本信息,如主键,文件名称,文件路径,文件类型。2、BaseDataPO用于存放主界面字段+List<UpLoadDetailPO> uploadDetailPOList
形成一对多的映射关系。
<resultMap id="BaseResultMap_upload" type="BaseDataPO">
<id column="id" property="id" jdbcType="VARCHAR"/>
<result property="checkstarttime" column="checkstarttime" jdbcType="TIMESTAMP"/>
<result property="" column="" jdbcType="VARCHAR"/>
<collection property="uploadDetailPOList" javaType="ArrayList" ofType="UploadDetailPO"
column="STATION_ID"><!--STATION_ID为外键-->
<id column="FILE_ID" jdbcType="VARCHAR" property="fileId" />
<result column="STATION_ID" jdbcType="VARCHAR" property="stationId" />
<result column="FILE_NAME" jdbcType="VARCHAR" property="fileName" />
<result column="FILE_PATH" jdbcType="VARCHAR" property="filePath" />
<result column="TYPE" jdbcType="VARCHAR" property="type" />
<result column="UPLOAD_TIME" jdbcType="VARCHAR" property="uploadTime" />
</collection>
</resultMap>
上传文件方法
public String uploadMethod(MultipartFile multipartFile, String fileName, String type) {
String imgPath = type + File.separator + fileName;//type表示不同的图片(文件)类型
File file = new File(baseFilePath + imgPath);
if (!file.isDirectory()) {
file.mkdirs();
}
String oldName = multipartFile.getOriginalFilename();
// String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."), oldName.length());
//构建文件真实路径
File newFile = new File(file.getAbsolutePath() + File.separator + oldName);
try {
//转存文件到指定路径
multipartFile.transferTo(newFile);
return imgPath + File.separator + oldName;
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public int uploadImportDetail(MultipartFile Mutiplefile[], Integer id, String type, HttpServletRequest request) {
/*type
1表示字段1(表单1)
2表示字段2 (表单2)
3表示字段3(表单3)
*/
// String fileName = file.getOriginalFilename()
//上传图片数量不超过50张
int sum = 50;
int sign = 1;
for (MultipartFile file : Mutiplefile) {
sum--;
if (sum == 0) {
break;
}
String format = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
if (!format.equals("pdf") && !format.equals("jpg")) {
return -1;//必须以pdf或者jpg结尾
}
String path = "http://" + request.getLocalAddr() + ":" + request.getServerPort() + request.getContextPath() + "/upload/";
UpLoadDetailPO upload = new UpLoadDetailPO();
String fileName = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
if (type.equals("1")) {
upload.setStationId(String.valueOf(id));
upload.setType("1");
upload.setFileName(file.getOriginalFilename());
upload.setFilePath(path + uploadMethod(file, fileName, "表单1"));
} else if (type.equals("2")) {
upload.setStationId(String.valueOf(id));
upload.setType("2");
upload.setFileName(file.getOriginalFilename());
upload.setFilePath(path + uploadMethod(file, fileName, "表单2"));
} else if (type.equals("3")) {
upload.setStationId(String.valueOf(id));
upload.setType("3");
upload.setFileName(file.getOriginalFilename());
upload.setFilePath(path + uploadMethod(file, fileName, "表单3"));
}
//插入数据库 (mapper.insert(upload))
if (count == 0) {
sign = -1;
break;
}
}
return sign;
}