如何从 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 检查文件是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章