如何从 C# 或 Javascript 检查文件是不是存在?

Posted

技术标签:

【中文标题】如何从 C# 或 Javascript 检查文件是不是存在?【英文标题】:How to check a file is existence from C# or Javascript?如何从 C# 或 Javascript 检查文件是否存在? 【发布时间】:2018-01-24 13:40:38 【问题描述】:

我们有一个应用程序托管在另一个国家/地区的其他服务器上,我将使用来自不同国家/地区的该应用程序,在使用该应用程序时,我想检查用户的机器本地“C”驱动器特定路径是否包含该文件存在与否。

如何通过 C# 或 javascript 实现这一点?

来自 C#

byte[] contents = null;
if (File.Exists("C:\Program Files (x86)\Fruit\fruitList.txt"))
     
        using (FileStream fileStream = File.OpenRead(scannedFile))
        
               contents = new byte[fileStream.Length];
        
     

但提到的“C”驱动器路径仅在 IIS 服务器中搜索(我们托管应用程序的地方)。但我想检查客户端(用户)的机器。

我在 Javascript 中找不到代码。

请帮助我,达到预期的效果。

谢谢。

【问题讨论】:

【参考方案1】:

您尝试做的事情并非易事。 JS 将无法工作,因为出于安全原因,它被阻止访问用户的客户端计算机。 C# 根本无法访问客户端,因为它运行在服务器上。

另一种方法是让用户使用<input type="file" />从他们的机器上手动选择所需的文件,然后将该文件上传到您的服务器以进行处理和验证。

您无法编写用户安装在他们机器上的程序,该程序为您的网站提供从客户端检索信息的方法 - 但是这是一个非常复杂的过程。

【讨论】:

感谢您的回复,我的情况是,如果客户端机器中不存在该文件,我将要求客户端下载我的安装程序。我该如何实现这种情况,您能否就此提出建议? 我在上面的回答中有什么不清楚的地方吗? 我很清楚你的回答,我不能在我的场景中使用 ,所以我想请你提出一个建议来实现我的场景。 @Cegone ... 大多数人会下载“Web 安装程序”,然后检查文件是否存在,如果不存在则下载它们。【参考方案2】:

您无法从服务器端访问客户端驱动器,这将是一个主要的安全问题。您将不得不要求客户告诉您他们是否有该文件或找到其他解决方法。这也是它在 IIS 服务器中搜索的原因,因为它认为您正在寻找本地文件。希望这可以帮助!

【讨论】:

【参考方案3】:

在网站 (C#) 中,您只能访问服务器的文件,因为正在执行应用程序的机器。

对于在客户端执行的 Javascript,这是不可能的,因为设计不允许客户端文件访问,请阅读这篇文章:

Javascript Security

如果您需要这个,您必须开发一个应用程序以安装在客户端的 PC 中并从该应用程序连接服务器,这是唯一的方法,您将永远无法访问客户端文件,因为浏览器。

【讨论】:

【参考方案4】:

这样用

C#

var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);

从 fileStream 变量中获取文件扩展名

Javascript:

<input id="File" type="file"/>
$("#File")[0].files[0].name.split(".")

【讨论】:

您似乎误解了 OP 的请求及其固有的缺陷

以上是关于如何从 C# 或 Javascript 检查文件是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .cs 文件 (C#) 调用 JavaScript/jQuery 函数

如何:在检查不可用的网络共享时防止超时 - C#

如何在 Javascript 或 Apex 中检查受限文件

如何在c#中检查url是文件类型还是网页类型?

从 C# 中的字节 [] 获取内容类型 [关闭]

Asp.net Core-在使用 javascript 或 C# 上传之前选择和验证 excel 文件?