1

ユーザーが以前にアップロードされたファイルをアップロードしているかどうかを知る方法はありますか?

これは、ファイル名を比較せずに行います。これは、ユーザーがファイルの名前を変更した場合です。

シナリオ

  • ユーザーが Web ブラウザ経由でファイルをアップロードします。
  • ユーザーがローカルでファイルの名前を変更します。ユーザーがファイルをアップロードします。
  • Web サーバーは、名前が変更されたファイルを検出し、古いファイルを削除しながら、名前を変更したファイル名として保存します。
4

1 に答える 1

2

最初に送信されたファイルでチェックサムを実行し、このチェックサムをファイル名でデータテーブルに保存できます。ユーザーが名前を変更したファイルを再度送信すると、チェックサムが再度計算され、チェックサムが既に存在する場合はデータベースが検索されます。

このソリューションの弱点は、チェックサムの一意性にあります。
この例では、一意のチェックサムを取得する可能性が高いと思います
(勘当されることを期待しています)

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);
    }
}
于 2012-08-20T22:41:06.083 に答える