【问题标题】: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 中找不到代码。

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

谢谢。

【问题讨论】:

    标签: javascript c# jquery angularjs


    【解决方案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 的请求及其固有的缺陷
        猜你喜欢
        • 2017-04-24
        • 2013-07-17
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        • 2019-03-16
        • 1970-01-01
        • 2013-06-08
        相关资源
        最近更新 更多