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
-
待加密的文件
-
@return 文件加密后的 MD5 值
-
@throws IOException
*/
public static String md5(File file) throws IOException {
FileInputStream is = new FileInputStream(file);
return md5(is);
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
中…(img-3tkT71XS-1710895277678)]
[外链图片转存中…(img-V9IdWxkP-1710895277678)]
[外链图片转存中…(img-XHHWhqr1-1710895277678)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
[外链图片转存中…(img-mGWr9gbc-1710895277679)]