1.web端上传文件A到服务器2.从服务器下载文件A到本地3.本地修改完文件A再次上传到服务器,服务器验证该文件是否是文件A,并且是否已经修改过请问这种问题的解决思路是什么呢?求大神给个思路~==========分割线==========我走过的一些弯路:我的思路是给每个上传的文件添加一个自定义文件属性fileId,然后通过该id来判断是否是同一个文件,再通过md5来判断是否已经修改过。具体的实现方式有如下:1.用js来判断我试图在客户端用js读取文件的自定义属性,将属性作为表单一部分提交到服务器进行验证,但是发现并不可行,因为js无法读取文件的自定义属性2.服务器端验证先把文件上传到服务器,在服务器端读取文件的自定义属性,再进行进一步的验证。但是发现,网页端上传的文件post到服务器端后,是以流的形式读取与保存的,将流保存为文件的时候,它只读取了流中的文件主体内容,而无法读取流中的文件属性(这里我还抱有怀疑,如果不对欢迎指出),所以也无法实现我使用的文件属性读写工具:DSOFile,点击查看
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
肯定是没有弄清楚需求。提需求的人根本不了解技术细节吧,他就随便一举例“一定要确保文件就是原来那个文件修改来的”,实际上文件为何非要限定从这里下载的呢?只要给你的文件符合你的要求就行了,你管它哪里来的。
我建议你重新确认需求。
另外你的文件是什么文件?改写工具是什么?
如果是无格式文本文件,基本不可能识别出来我怎么修改这文件的,是重写的还是修改的。
如果是有格式可以添加一些注释 而又约定必须保留这些内容的情况下,你可以往里面加令牌吧。 下载的时候我塞进个令牌,上传来的时候我检查令牌就行了。二进制文件和专用修改工具就可以根据设计保留这个。如果是文本文件,那令牌也就明白着写在人看得见的地方,他删还是改还是保留令牌文本,就靠人的执行力了。
像你这需求,我的看法就是它是无意义的。你要是真想确保必须是原文件改来的,你直接提供网页 在网页上通过服务器修改内容就行了,何必要下载修改再上传呢。 你既允许我修改 又要检查是不是那个文件,那怎么可能? 我作为人告诉你这就是你那个文件,你这机器就得认,完全一致说明我没修改,不一致说明我改了,我就是完全把它改成别的内容(或是就是给你了个别的文件),我说这是那个文件,你机器还想反抗不成。 一句话,重新确认需求,最好的实现就是通过网页和服务器修改,不让下载修改再上传。
添加回答
举报
0/150
提交
取消