MD5为撒更适用于文件上传
文章类型:其他
发布者:hp
发布时间:2025-10-17
在上传文件时,我们常规做法就是时间戳方式,那么,如果多个重复性文件呢?
采用md5方式,基于内容生成,保证文件名唯一性
import fs from "fs";
import crypto from "crypto";
const FILE_PATH = "./moment.json";
// 计算文件 MD5
function calcFileMD5(filePath) {
const buffer = fs.readFileSync(filePath);
return crypto.createHash("md5").update(buffer).digest("hex");
}
const md5 = calcFileMD5(FILE_PATH);
console.log(`${FILE_PATH} => ${md5}`);
1:文件唯一性与内容验证:哈希值基于文件内容生存,不同的文件必然生成不同的值,保证了文件标识的唯一性,可直接用于文件去重和完整性验证。
2:防止文件名冲突:基于文件内容生成,保证了唯一性
3:文件验证渝完整性检查:可用于上传成功后前后端对比唯一标识符,如果一致则说明正确
4:跨系统兼容性:生存固定长度的32位十六进制的字符串,不受系统、平台影响
5:跨域访问与缓存控制:基于内容生成,内容变化则MD5变化,可确保在内容更新时重新加载资源,避免不必要的贷款消耗和缓存失效,提升加载速度和资源利用
6:避免文件内容泄漏:属于单项哈希算法,难直接反推出原始内容
1:MD5基于文件内容生成哈希值,能精确反映文件的唯一性
2:在需要唯一标识和完整性验证的文件上传场景中,应优先使用 MD5,时间戳可作为辅助信息存储上传时间,但不能替代内容标识。
3:先计算文件 MD5 并发送给服务器,若服务器已存在相同 MD5 的文件,则直接返回上传成功,省去重复传输的过程,从而显著节省带宽并提升上传速度。
暂无评论,快来发表第一条评论吧~