이미 존재하는지 확인하기 위해 저장하지 않고 MD5 해시를 확인하고 싶습니다. 아래 코드를 시도했지만 파일이 저장되지 않은 경우 파일의 MD5를 계산하지 않습니다. 바이트 배열에서 파일을 작성에 대해 생각하는 것은 그 바이트 배열의 MD5를 얻을 수 있지만 파일MD5를 확인하기 전에 파일을 컴퓨터에 저장하십시오.
public void ProcessRequest(HttpContext context)
{
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
string ServerPath = context.Server.MapPath("~/uploads/" + file.FileName);
string Name = file.FileName;
string MD5 = GetMD5(ServerPath);
int Size = file.ContentLength;
string type = file.ContentType;
file.SaveAs(ServerPath);
}
}
}
을 없음 바이트 나를 떠나 병목 여기에 있기 때문에이 getMD5 방법
public string GetMD5(string fileName)
{
try
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileName))
{
string Hash = BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "");
return Hash;
}
}
}
catch (Exception ex)
{
throw ex;
}
}
메모리에 모두 읽어 넣은 다음이를 확인한 다음 디스크에 기록해야합니다. 어느 쪽이든 그것은 모든 클라이언트에서 서버로 와야하므로 모든 대역폭을 절약하지 않을 것입니다. 내가 서버에서 temp 위치에 쓰고, MD5를 체크하고 이미 temp를 삭제했다면, 그렇지 않으면 정확한 위치에 복사한다. – musefan
is not that too much time? – Tobi
처음에 파일이 없어도 파일에 대한 MD5를 계산하려면 어떻게해야합니까?! 파일의 MD5에 사용자가 입력하도록 할 수 있습니다 ... 그들이 올바르게 할 수 있다고 믿을 수 있다면 – musefan