文件上传与MD5文件加密代码保存
前端: <input id="UpLoad" type="file" runat="server" />
//取出所选文件的本地路径
string fullFileName = this.UpLoad.PostedFile.FileName;
//从路径中截取出文件名
string fileName = fullFileName.Substring(fullFileName.LastIndexOf("\\") + 1);
string pathName1 = Path.GetFileNameWithoutExtension(fullFileName); //获取文件名 text
//获取文件大小
string fileSize = Convert.ToString(this.UpLoad.PostedFile.ContentLength);
Stream afile = UpLoad.PostedFile.InputStream;
string md = GetMD5Hash(afile); //md5
string currPath = @"D:\QLSSFILES\";
string subPath = currPath + dic + "\\" + pathName1 + dd + version.ToString()+ "\\";
//检查是否存在文件夹
if (false == System.IO.Directory.Exists(subPath))
{
//创建pic文件夹
System.IO.Directory.CreateDirectory(subPath);
}
string saveFileName = subPath + fileName;
UpLoad.PostedFile.SaveAs(saveFileName);
public static string GetMD5Hash(string str)
{
//就是比string往后一直加要好的优化容器
StringBuilder sb = new StringBuilder();
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
//将输入字符串转换为字节数组并计算哈希。
byte[] data = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
//X为 十六进制 X都是大写 x都为小写
//2为 每次都是两位数
//假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A。
//遍历哈希数据的每个字节
//并将每个字符串格式化为十六进制字符串。
int length = data.Length;
for (int i = 0; i < length; i++)
sb.Append(data[i].ToString("X2"));
}
return sb.ToString();
}
public static string GetMD5Hash(Stream str)
{
//就是比string往后一直加要好的优化容器
StringBuilder sb = new StringBuilder();
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
//将输入字符串转换为字节数组并计算哈希。
byte[] data = md5.ComputeHash(str);
//X为 十六进制 X都是大写 x都为小写
//2为 每次都是两位数
//假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A。
//遍历哈希数据的每个字节
//并将每个字符串格式化为十六进制字符串。
int length = data.Length;
for (int i = 0; i < length; i++)
sb.Append(data[i].ToString("X2"));
}
return sb.ToString();
}

浙公网安备 33010602011771号