3

我正在创建一个 ASP.NET Web 应用程序,以使用 .NET Wrapper for Scheduled Tasks 从远程位置在我们的服务器上安排任务。但是,我被困住了。

用户需要能够浏览服务器上的文件系统,以检索用户在此应用程序中创建的新任务的“要运行的文件”。我需要获取文件路径/文件名并将其传递给 .NET 包装器。

我尝试过使用 HTMLInputFile,但我还没有找到一种方法来让我工作。

任何帮助表示赞赏。

谢谢


更新:
对于这个项目,我们决定简单地在一个下拉框中列出用户可以使用的可执行文件,因为他们并不需要完全访问文件系统,只是为了安全起见。

4

4 回答 4

4

HTMLInputFile 用于浏览客户端的文件系统并将文件上传到服务器。它不用于浏览服务器的文件系统。

你将需要一些完全不同的东西。您将需要一些服务器端代码来通过浏览器向用户显示服务器端文件夹结构。

这里有一个基本实现的例子。

更新:

使用该示例,您替换“yourfolderHere”的路径需要是虚拟路径,而不是绝对路径。因此,例如“C:\Inetpub\wwwroot\uploads”将不起作用,但“uploads”将起作用。

我希望不言而喻,在实施这样的事情时需要考虑严重的安全问题。

于 2009-01-29T18:38:14.897 回答
0

HTMLInputFile 只能在客户端机器上工作。

您需要用 ASPX/HTML 编写一个在服务器端浏览的文件系统浏览器。做起来应该不难。

你不能使用<input type="file"标签
这会打开一个浏览客户端机器的客户端对话框。

于 2009-01-29T18:35:24.323 回答
0

据我所知,您需要创建自己的“浏览器”。

例如,您可以使用 My.Computer.Filesystem 类来检索文件夹中的文件列表并在网页上显示这些文件。然后,用户选择相关文件并将响应发送回服务器。

于 2009-01-29T18:37:22.073 回答
0

您可以使用 System.IO.Directory 来获取目录和文件。这些可以通过多种方式显示。一个简单的浏览器/文件选择应该可以在少于 50 行代码中完成。

另请注意,您可能需要向运行 Web 应用程序的用户授予额外权限,以便可以访问文件系统。

围绕此还有各种安全隐患,因此除非您确实需要,否则不要授予对所有内容的访问权限。

于 2009-01-29T18:41:55.280 回答