console.log(file, fileList);
},
handlePictureCardPreview(file) {//预览图片时调用
console.log(file);
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
beforeAvatarUpload(file) {//文件上传之前调用做一些拦截限制
console.log(file);
const isJPG = true;
// const isJPG = file.type === ‘image/jpeg’;
const isLt2M = file.size / 1024 / 1024 < 2;
// if (!isJPG) {
// this.$message.error(‘上传头像图片只能是 JPG 格式!’);
// }
if (!isLt2M) {
this.$message.error(‘上传图片大小不能超过 2MB!’);
}
return isJPG && isLt2M;
},
handleAvatarSuccess(res, file) {//图片上传成功
console.log(res);
console.log(file);
this.imageUrl = URL.createObjectURL(file.raw);
},
handleExceed(files, fileList) {//图片上传超过数量限制
this.$message.error(‘上传图片不能超过6张!’);
console.log(file, fileList);
},
imgUploadError(err, file, fileList){//图片上传失败调用
console.log(err)
this.$message.error(‘上传图片失败!’);
}
}
}
3.controller
@RequestMapping(value = “/imgUpload”)
public Wrapper imgUpload(HttpServletRequest req, MultipartHttpServletRequest multiReq)
throws IOException {
System.out.println(“—” + fileUploadPath);//我这里用的springboot 在application.properties中配置,使用@Value 获取的文件上传目录
MultipartFile file = multiReq.getFile(“file”);
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.indexOf(“.”));
String localFileName = MD5Util.md5(file.getInputStream()) + suffix;
File localFile = new File(fileUploadPath + localFileName);
if (!localFile.exists()) {
localFile.createNewFile();
FileOutputStream fos = new FileOutputStream(
localFile);
FileInputStream fs = (FileInputStream) multiReq.getFile(“img”).getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fs.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.close();
fs.close();
} else {
log.info(“文件已存在!!”);
}
return WrapMapper.wrap(
Wrapper.SUCCESS_CODE,
Wrapper.SUCCESS_MESSAGE,
“http://localhost:8080/img/” + localFileName);//这里是我执行封装的返回结果,也可以使用map,
}
4.MD5工具类
import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
private static char[] Digit = {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’,
‘9’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’};
public static String getMd5Sum(String inputStr)
throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance(“MD5”);
byte[] inputStrByte = inputStr.getBytes();
digest.update(inputStrByte, 0, inputStrByte.length);
byte[] md5sum = digest.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 16; i++) {
char[] ob = new char[2];
ob[0] = Digit[md5sum[i] >> 4 & 0x0F];
ob[1] = Digit[md5sum[i] & 0x0F];
String s = new String(ob);
sb.append(s);
}
return sb.toString();
}
/**
-
对字符串进行 MD5 加密
-
@param str
-
待加密字符串 -
@return 加密后字符串
*/
public static String md5(String str) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance(“MD5”);
md5.update(str.getBytes(“UTF-8”));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e.getMessage());
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e.getMessage());
}
byte[] encodedValue = md5.digest();
int j = encodedValue.length;
char finalValue[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte encoded = encodedValue[i];
finalValue[k++] = Digit[encoded >> 4 & 0xf];
finalValue[k++] = Digit[encoded & 0xf];
}
return new String(finalValue);
}
/**
-
签名字符串
-
@param text
-
需要签名的字符串 -
@param sign
-
签名结果 -
@return 签名结果
*/
public static boolean verify(String text, String sign) {
String mysign = md5(text);
if (mysign.equals(sign)) {
return true;
} else {
return false;
}
}
/**
-
对文件进行 MD5 加密
-
@param file
-
待加密的文件
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
文章到这里就结束了,如果觉得对你有帮助可以点个赞哦,如果有需要前端校招面试题PDF完整版的朋友可以点击这里即可获取,包括答案解析。

675)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
文章到这里就结束了,如果觉得对你有帮助可以点个赞哦,如果有需要前端校招面试题PDF完整版的朋友可以点击这里即可获取,包括答案解析。
[外链图片转存中…(img-jyhIsRfk-1712961746676)]
文章详细描述了在SpringBoot应用中处理文件上传的功能,包括文件类型检查、大小限制、预览、成功与失败处理,以及MD5加密的使用。开发者分享了Controller层和MD5工具类的代码片段,以展示如何实现图片上传功能和文件名生成算法。
953

被折叠的 条评论
为什么被折叠?



