Dosya daha önce yüklenmiş mi ?

Aynı dosya daha önce yüklenmiş mi yoksa ilk kez mi yükleniyor kontrolünü sağlamak için, yüklenen dosyanın checksum ını alıp kaydediyoruz ve sonradan yüklenen dosyalarla karşılaştırıyoruz. Kabaca checksum, yüklenen dosyanın içeriğinin okunarak karşılığında bir değer oluşturulmasıdır. Bu yönteme 100% güvenilir çalışır demek yanlış olur, ama büyük ölçüde güvenilir bir yöntemdir. Şöyle bir örnek vereyim, kullanıcı sitemize bir fotoğraf yükleyecek, fakat aynı foto zaten yüklenmiş, eğer fotoğrafı photoshop yada benzeri bir programda açıp üzerine dahi yazsa oluşacak checksum değişir. Bu yöntemi biz bir projemizde şöyle kullanıyoruz. Her yüklenen dosyanın checksum değerini db deki ilgili alana yazıyoruz ve sonrasında yüklenen dosyaların değerleriyle karşılaştırıyoruz. Basit ama etkili bir yöntem olduğunu söyleyebilirim.

Kullanımı şu şekilde, fileupload kontrolü ile dosyanın yüklendiğini varsayarsak; GetCheckSum(fileupload1.FileName) geriye bize dosyanın checksum değerini döndürecektir.

    public static string GetChecksum(string file)
    {
        using (FileStream stream = File.OpenRead(HttpContext.Current.Server.MapPath(file)))
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] checksum = md5.ComputeHash(stream);
            return BitConverter.ToString(checksum).Replace("-", String.Empty);
        }
    }