如何知道上传的文件是否已更改?

时间:2011-11-27 15:07:02

标签: c# javascript asp.net file-upload file-io

如果用户将某个文件上传到我的服务器,并且我想确保该文件自上次用户上传后没有更改,我该如何获取此信息?

我有一个包含User_idFileName的日志表(User_id是唯一的)。我在阅读完内容后删除了该文件。

2 个答案:

答案 0 :(得分:7)

您可以在删除之前存储hash文件。要查看它是否是正在上载的文件,请将哈希与前一个哈希进行比较。您可以使用System.Cryptography中的一个HashAlgorithm类来完成此操作,例如SHA1

  

“加密哈希函数是一个确定性过程   一个任意的数据块并返回一个固定大小的位串   (加密)哈希值,这是一种偶然的或有意的   更改为数据将更改哈希值“

以下是一些示例代码,可以帮助您入门,假设变量stream是包含您的文件数据的流(您可以使用FileStream打开它):

var sha = new System.Security.Cryptography.SHA1Managed();
byte [] hash = sha.ComputeHash(stream);

现在,变量hash将包含散列,即文件内容的指纹。即使是一个小的更改(例如单个位)也会导致不同的哈希值,但是在同一个文件上获取哈希值将始终返回相同的哈希值。

答案 1 :(得分:3)

哈希是一种通用的功能。通常用于检测大块数据(如文件)的更改是使用某些crc

在linux下有标准实用程序cksum

您可以生成 cksum 文件名 并获取输出。例如,将其存储在数据库中,然后检查传入的新文件。