计算文件的md5值和保存文件


public class saveExcle : IHttpHandler {

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";

HttpPostedFile hpf=context.Request.Files[0];
string ext = Path.GetExtension(hpf.FileName);

if (ext==".xls")
{
string name = hpf.FileName;
string dir = "/UplaodExcle/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(context.Server.MapPath(dir)));//新建文件夹.
//需要对上传的文件进行重命名.(根据上传图片的MD5值进行命名,并且构建好完整的文件存放路径)
string fullDir = dir + GetStreamMD5(hpf.InputStream) + ext;
string url = fullDir;
hpf.SaveAs(context.Server.MapPath(fullDir));//保存
context.Response.Write(fullDir);
}
}

public bool IsReusable {
get {
return false;
}
}

/// <summary>
/// 计算文件的MD5值
/// </summary>
/// <param name="filepath"></param>
/// <returns></returns>
public String GetStreamMD5(System.IO.Stream stream)
{
string strResult = "";
string strHashData = "";
byte[] arrbytHashValue;
System.Security.Cryptography.MD5CryptoServiceProvider oMD5Hasher =
new System.Security.Cryptography.MD5CryptoServiceProvider();
arrbytHashValue = oMD5Hasher.ComputeHash(stream); //计算指定Stream 对象的哈希值
//由以连字符分隔的十六进制对构成的String,其中每一对表示value 中对应的元素;例如“F-2C-4A”
strHashData = System.BitConverter.ToString(arrbytHashValue);
//替换-
strHashData = strHashData.Replace("-", "");
strResult = strHashData;
return strResult;
}
}

posted @ 2014-01-06 15:43  蒙面侠  阅读(602)  评论(0编辑  收藏  举报