2015-09-15 40 views
0

我使用HTML5和計算MD5在客戶端上傳文件(JavaScript)的 然後在服務器端(處理)我將文件分片的表是這樣的:計算的Md5在服務器端

public void WriteBlobsToDB(byte[] buffer,int id) 
    { 
     File_Data fl = new File_Data(); 
     fl.FileId = id; 
     fl.FileChunks = buffer; 
     try 
     { 
      WiFileData.InsertOnSubmit(fl); 
      dc.SubmitChanges(); 
     } 
     catch (ExecutionEngineException e){throw e;} 
    } 

,然後當所有的文件分片被保存在數據庫上我試着去閱讀他們的廣告將它們保存在一個byte[] allData並在另一個表插入:

public void WriteBlobs(int id, string fileName,int count,byte[] allData) 
{ 
    List<chunkInfo> listOfChunks; 
    File_Data fd = new File_Data(); 
    File_List fl = new File_List(); 
    try 
    { var chunks = (from c in FileData 
         where c.FileId == id 
         orderby c.Id ascending 
         select new chunkInfo 
         { Id = c.Id, 
         ChunkData = c.FileChunks.ToArray() 
         }); 
     listOfChunks = chunks.ToList(); 

     foreach (chunkInfo sChunk in listOfChunks) 
     { fl.FileId = id; 
      fl.FileName = fileName; 
      int dstoffset = count * sChunk.ChunkData.Length;// count is set to 0 at teh beggginning 
      Buffer.BlockCopy(sChunk.ChunkData, 0, allData, dstoffset, sChunk.ChunkData.Length); 
      count++; 
     } 
     int l = allData.Length; 
     fl.FileData = new Binary(allData); 
     FileList.InsertOnSubmit(fl); 
     dc.SubmitChanges(); 

    } 
    catch (Exception){throw;} 
} 

的代碼工作,我保存數據數據庫和allDatasize與en中的文件大小相同d。我只需要驗證表中Filedata字段中保存的數據是否寫入。我如何計算md5並進行比較?

感謝

回答

1

如果你問你怎麼樣能夠做到這純粹是在SQL Server中,你可以簡單地利用了HASH_BYTES功能,這樣的事情:

select stored_md5_column, hashbytes('MD5', Filedata) as md5hash 
from your_table 
where stored_md5_column != hashbytes('MD5', Filedata); 

取決於你怎麼對」重新存儲您的「stored_md5_column」值,您可能需要將哈希字符的結果強制轉換爲其他字符,以便自然地獲得適當的相等比較。

如果你不是查找執行在C#檢查/驗證,你反而會想利用MD5 class和這樣的事情,你有你的ALLDATA數組緩衝區填滿後:

using (var md5Obj = MD5.Create()) 
{ 
    var md5Hash = md5Obj.ComputeHash(allData); 
} 

這假設你的allData是一個字節數組(我無法從你的代碼中知道)。如果它不是字節數組,則首先需要將其轉換爲標準字節數組或流以傳遞給MD5 ComputeHash方法。

+0

不,我需要使用Linq – laila

+0

@laila來做,請參閱C#代碼/參考的更新編輯 – chadhoc