1. 程式人生 > 其它 >檔案上傳與MD5檔案加密程式碼儲存

檔案上傳與MD5檔案加密程式碼儲存

//取出所選檔案的本地路徑
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();
    }