C#FileUpload SaveAs外壳

问题描述:

我正在使用一个FileUpload控件并且有一个关于SaveAs method的问题。如果上传的文件存在,我知道它会覆盖它,但如果文件名与文件名不同,它会使用现有文件名还是新文件名。C#FileUpload SaveAs外壳

例如

,如果我有一个服务器和一个名为 test.txt的新上传名为test.txt文件进来,这名会用吗?

+0

'套管'是什么意思.. – Rahul 2013-05-10 14:02:03

+1

@Rahul - 大写/小写。 – Oded 2013-05-10 14:02:16

+0

是的,抱歉的混乱! – 2013-05-10 14:04:43

答案取决于操作系统的行为。

对于Windows操作系统,该文件将被覆盖。从本质上讲,就Windows而言,文件名不区分大小写,至少为了识别它们。 Windows也将使用新的文件名(如果被覆盖)(自己尝试 - 将文件复制到一个文件夹中,看看会发生什么),尽管旧版本的操作系统使用原始文件名(XP是这样做的)。

在Linux操作系统上将创建一个新文件。 Linux/Unix/iOS(以及几乎所有的Unix变体)都将不同文件的文件视为不同的文件。

+0

这是一个Windows服务器,我知道它会被覆盖,但不知道它是否会保留原始文件或新文件的外壳。 – 2013-05-10 14:04:15

+0

@katastraphi - 如果您没有特别删除它,原件将被覆盖,尽管旧版本会保留原件。 – Oded 2013-05-10 14:05:08

+0

太棒了,谢谢Oded!将标记为答案。 – 2013-05-10 14:05:57

也许这并不是完全回答这个问题,但我认为这样会更安全一些,不会对替换后将使用哪个文件名做出任何假设。

因此,我建议您只保存小写的上传文件,这样如果您切换服务器(操作系统),您将覆盖您的背部,这将为您节省一些调试。

+0

尽管我同意我们应该保持一致,但首席开发人员希望能够判断用户是否更新了文档。当它们最初创建它时,它将全部大写,然后编辑将它移动到小写。当他们上传时,他们被扫描,然后移动到不同的文件夹。如果它们在被扫描之前编辑,我们需要知道将使用哪个文件名。 – 2013-05-10 14:19:23

+0

我想你们看着这个错误的方式,但这只是我的看法。对于您在上述评论中描述的用例,我会在每次上传时创建文件内容的散列(最近md5速度很快),如果第二个(或任何后面的情况下存在多个更新)散列不同于第一个(如果存在多个更新,则最后一个),您将知道文件已更改。 – Paul 2013-05-10 14:22:45

+0

不幸的是,对于系统设置的方式,如果不进行很多更改,这将无法正常工作。我没有办法把它设置好,所以我只是想确保客户想要的是什么。 – 2013-05-10 14:29:24