是否可以在 C# ASP.NET Web 应用程序中执行此操作

本文关键字:应用程序 执行 操作 Web NET ASP 是否 | 更新日期: 2023-09-27 17:55:46

我想编写一个具有两个按钮的Web应用程序,并且直接从浏览器中允许我打开两个简单的文本文件(使用"文件打开"对话框或类似的东西),然后继续读取这些文件的内容并将它们存储在两个字符串中。这里的关键点是,用于读取的确切文件在运行时我不知道,因此由用户选择文件。

目标是以后能够比较这两个字符串,但这部分我已经知道如何做。我的问题是 - 是否可以在 Web 应用程序内部执行此操作(即调用文件打开对话框以允许用户选择要从中读取的文件),或者安全限制或其他一些与 Web 应用程序相关的约束会阻止它完成?

如果可能的话,我将不胜感激一些描述如何打开文件以及如何将所选文件的内容读入字符串的示例代码。另外,我想知道这是否不可能,我应该考虑做一个桌面应用程序或尝试完全不同的方式。

谢谢!

是否可以在 C# ASP.NET Web 应用程序中执行此操作

这是可能的,但您最终必须将两个文本文件上传到服务器,并在服务器端将文件读取为字符串。

您需要做的就是向页面添加两个单独的FileUpload控件,以及一个用于将文件发布到服务器的按钮。

如果不希望刷新页面,则始终可以使用 ASP.NET AJAX 工具包中的AsyncFileUpload控件通过 AJAX 进行比较。

更新

读取文件的内容应该相对容易(只要它们是纯文本):

var reader = new StreamReader(fileUploadControl.PostedFile.InputStream);
var contents = reader.ReadToEnd();

一种方法是使用 ASP.NET AJAX AsyncFileUpload控件。

http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

为了从服务器端代码(C# 代码)访问文件,您需要用户上传它们。 执行此操作的标准方法(出于安全原因,您应该依赖的唯一方法)是使用文件输入元素。 在 ASP.NET 中,可以使用文件上传控件。

实质上,您将为用户提供其中两个控件,他们可以使用这些控件上传这两个文件。 然后,您将在服务器上读取它们的内容,根据需要将它们保存(作为文件,保存到数据库,仅在会话中临时使用等),并对这些数据执行逻辑。 然后构建您的输出(您说您已经拥有的比较部分)以显示在页面刷新中。

请注意诸如如果用户尝试上传非文本文件、非常大的文件等该怎么办等问题。

这在JS上是不可能的。您必须构建文件上传(并存储会话信息)或使用 Silverlight 和 Javascript-Bridge 连接到您的 Web 应用程序。

下面是 Silverlight 中 FileOpenDialog 的示例: http://www.silverlightexamples.net/post/Open-File-Dialog-in-Silverlight.aspx

下面是通过 C#/Webforms 上传文件的示例 http://support.microsoft.com/kb/323246