文件上传的接收类型:多文件上传时文件类型需要是MultipartFile[],并且文件接收的名称要和前端input的name相对应,
文件解析成功之后将文件上传到固定位置之后将文件名称保存在数据库内,方面下次拿出,图片名称需要进行唯一性处理,否则,名字相同时保存文件就会出现问题。
当需要进行主图的设置时,建议使用图片名称方向来设置主图,如果是给了id,或默认第一张图为主图时,可能会出现问题(因为在图片或者文件的传输过程中,文件传输的数组会根据文件的大小进行排序传输,当第一张图过大时,后面图片会排到前面来进行上传)。
private MultipartFile[] file;//上传的图片
private String imgName;//文件名称
public MultipartFile[] getFile() {
return file;
}
public void setFile(MultipartFile[] file) {
this.file = file;
}
public String getImgName() {
return imgName;
}
public void setImgName(String imgName) {
this.imgName = imgName;
}
文件上传的处理类:
if (in.getFile() != null) {// 可定先是要判断上传的文件是否为空
String path = null;// 文件路径
String type = null;// 文件类型
String fileName = "";
String zhuImg = "";
//循环读取图片
for (int i = 0; i < in.getFile().length; i++) {
fileName = in.getFile()[i].getOriginalFilename();// 文件原名称
System.out.println("上传的文件原名称:" + fileName);
// 将文件类型截出来,判断文件类型
type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
if (type != null) {// 判断文件类型是否为空
//这里是规定图片的类型,必须是png和jpg,我这里规定的是图片的后缀,如果需要上传别的类型文件,可以自行更改
if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
// 测试环境下图片储存在电脑的桌面上
String realPath = "C:\\Users\\mzy\\Desktop\\img\\";
// 我先自己给个文件名
String trueFileName = String.valueOf(System.currentTimeMillis()) + fileName;
//判断主图
if(fileName.equals(in.getZhuName)){
zhuImg = trueFileName ;
}
imgUrl = imgUrl + trueFileName + ",";
// 设置存放图片文件的路径
path = realPath + trueFileName;
System.out.println("存放图片文件的路径:" + path);
// 转存文件到指定的路径
try {
in.getFile()[i].transferTo(new File(path));
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
System.out.println("文件成功上传到指定目录下");
} else {
System.out.println("文件类型不正确");
return null;
}
} else {
System.out.println("文件类型为空");
return null;
}
}
} else {
System.out.println("没有找到相对应的文件");
}
//将最终的所有图片路径存到库中
if (!"".equals(imgUrl)) {
in.setImgName(imgUrl.substring(0, imgUrl.length() - 1));
System.out.println("我进入设置图片名称的地方,名称为:"+in.getImgName());
}
if(!"".equals(zhuImg)){
in.setZhuImg(zhuImg));
System.out.println("主图为:"+in.getZhuImg());
}