有没有办法知道用户是否正在上传之前已经上传过的文件。
这没有比较文件名。这是在用户重命名文件的情况下。
设想
- 用户通过他们的网络浏览器上传文件。
- 用户在本地重命名文件。用户上传文件。
- Webserver 检测到重命名的文件并将其保存为重命名的文件名,同时删除旧文件。
有没有办法知道用户是否正在上传之前已经上传过的文件。
这没有比较文件名。这是在用户重命名文件的情况下。
设想
您可以对首次提交的文件进行校验和,将此校验和存储在具有文件名的数据表中。当用户再次提交重命名的文件时,您再次计算校验和并在数据库中搜索校验和是否已经存在。
该解决方案的弱点在于校验和的唯一性。
通过这个例子,我认为你很有可能获得一个独特的校验和
(期望被否认)
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);
}
}