ユーザーが以前にアップロードされたファイルをアップロードしているかどうかを知る方法はありますか?
これは、ファイル名を比較せずに行います。これは、ユーザーがファイルの名前を変更した場合です。
シナリオ
- ユーザーが Web ブラウザ経由でファイルをアップロードします。
- ユーザーがローカルでファイルの名前を変更します。ユーザーがファイルをアップロードします。
- Web サーバーは、名前が変更されたファイルを検出し、古いファイルを削除しながら、名前を変更したファイル名として保存します。
ユーザーが以前にアップロードされたファイルをアップロードしているかどうかを知る方法はありますか?
これは、ファイル名を比較せずに行います。これは、ユーザーがファイルの名前を変更した場合です。
シナリオ
最初に送信されたファイルでチェックサムを実行し、このチェックサムをファイル名でデータテーブルに保存できます。ユーザーが名前を変更したファイルを再度送信すると、チェックサムが再度計算され、チェックサムが既に存在する場合はデータベースが検索されます。
このソリューションの弱点は、チェックサムの一意性にあります。
この例では、一意のチェックサムを取得する可能性が高いと思います
(勘当されることを期待しています)
public string GetChecksum(string filePath, HashAlgorithm algorithm)
{
using (var stream = new BufferedStream(File.OpenRead(filePath), 100000))
{
HashAlgorithm SHA512 = new SHA512Managed();
byte[] hash = SHA512.ComputeHash(stream);
return BitConverter.ToString(hash).Replace("-", String.Empty);
}
}