【问题标题】:Get contents of local folder in javascript (or ASP.NET VB)在 javascript(或 ASP.NET VB)中获取本地文件夹的内容
【发布时间】:2010-03-21 08:43:18
【问题描述】:

网页是否可以弹出一个打开文件夹对话框,要求用户选择一个文件夹,然后在网页的列表(或其他内容)中显示该文件夹的内容。 它不会写入文件,只会读取它们。 该网页是远程托管的。

乔纳森

【问题讨论】:

  • 您想支持哪些浏览器? JavaScript 不提供任何用于访问文件系统的标准化方法。 (出于安全原因,这是故意的。您不希望任何奇怪的网站能够在您的文件中浏览,对吗?)。但是,有一些特定于浏览器的方法可以访问文件系统(例如,通过带有 IE 的 ActiveX 对象)。

标签: asp.net javascript vb.net directory local


【解决方案1】:

总之……没有。

要求您的应用程序使用 ActiveX 插件会导致彻底失败。除非您正在为您控制客户端配置的 Intranet 编写一个非常特定于目标的应用程序,否则这只是一个可怕的想法。

基于 Web 的应用程序的功能受到严格限制,这就是其中之一。你想达到什么目的?也许有一种方法可以通过标准文件上传对话框来做到这一点?还是 WebDAV?

【讨论】:

    【解决方案2】:

    我编写了一小段代码,它显示了给定文件夹名称的文件列表。它是使用 VBScript 编写的,因此只能在 IE 和 FireFox 上工作(并且可能只在 Windows 上)。不过值得一看

    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE='VBSCRIPT'>
    Sub showfiles()
    On Error Resume Next
    Dim fso, folder, files, sFolder, path
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    sFolder = Document.getElementById("fdr").value
    Set folder = fso.GetFolder(sFolder)
    Set files = folder.Files
    
    For each folderIdx In files
    mydiv.innerhtml=mydiv.innerhtml & "<BR/> " & folderIdx.Name
    Next
    end sub
    </SCRIPT>
    </HEAD>
    <BODY>
    <INPUT id="fdr" TYPE="TEXT" VALUE="C:\" />
    <INPUT TYPE="BUTTON" ONCLICK="showfiles()" value="show files" />
    <DIV id="mydiv"></DIV>
    </BODY>
    </HTML>
    

    【讨论】:

    • 据我所知,这只有在用户双击保存在本地计算机上的 .html 文件时才有效。
    【解决方案3】:

    您可以使用 Signed Java Applet,这是一种相当常见的解决方案。它适用于浏览器和平台。所有用户都必须接受您的证书一次并安装 java 运行时。

    您也可以编写一个浏览器插件。

    【讨论】:

      【解决方案4】:

      它会让你(或你的用户)跳过一千个圈,但是 ActiveX 文件系统对象可以用来做你想做的事......

      http://msdn.microsoft.com/en-us/library/bkx696eh%28VS.85%29.aspx

      编辑——添加“可能”

      【讨论】:

        【解决方案5】:

        已编辑 :- 看看this。可能是一种解决方法。

        【讨论】:

          【解决方案6】:

          JavaScript 无法做到这一点,因为它无法与操作系统一起工作。

          ,但是,有一种方法可以使用 VBScript (ASP.NET) 来实现,但 IE 会在允许代码执行之前向用户抛出安全警告仅当 他们的安全级别低于中低。

          如果您尝试通过 Internet 访问本地文件,最好的选择是使用 Java 或 Flash(除了发现漏洞并以这种方式获取访问权限,即不好的方式)。

          如果您仍然想要代码(用于 ASP/VBscript):

          Dim FileSystem
          Set FileSystem = GetObject("Scripting.FileSystemObject")
          If Err.Number <> 0 Then
          MsgBox("Error setting FileSystem object; check WSH version.")
          WScript.Quit(0)
          End If

          Dim Folder
          Set Folder = FileSystem.GetFolder("folder_name")
          If Err.Number <> 0 Then
          MsgBox("Error getting folder.")
          WScript.Quit(1)
          End If

          -卡洛斯·努涅斯

          【讨论】:

            猜你喜欢
            • 2023-03-20
            • 2017-06-05
            • 2017-07-07
            • 2013-07-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多