2011-05-10 90 views
2

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

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

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

谢谢!

+0

你想这样做的客户端?如果是这样,那么它将不起作用。 – jwd 2011-05-10 17:42:10

+0

是的,我试图找出是否有可能做这个服务器端。不能说我太惊讶,它不是。感谢大家的回应! – GonzoKnight 2011-05-10 17:47:46

回答

6

这是可能的,但你会结束必须上传两个文本文件到服务器,并将文件读取到字符串服务器端。

您只需将两个单独的FileUpload控件与一个按钮一起放入服务器即可。

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

更新

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

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

这很有道理。谢谢!我还有一个问题:一旦文件上传到服务器,我将如何阅读其内容?是否有可能看到一些代码? – GonzoKnight 2011-05-10 17:44:22

+0

@GonzoKnight - 已更新。 – 2011-05-10 17:50:24

+0

我喜欢它! – GonzoKnight 2011-05-10 17:53:39

2

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

你基本上会给用户两个这些控件,他们可以上传这两个文件。然后你会在服务器上读取它们的内容,然后保存它们(不管你是否希望(作为文件,到数据库,在Session中临时使用等等)),然后在那些数据上执行你的逻辑。然后建立你的输出(比较部分,你说你已经)在页面上刷新显示。

如果用户试图上传非文本文件,文件非常大,等

+0

工作。我之前已经上传了文件,所以我知道这是如何完成的。我会如何去阅读文件上传后的内容(我想这是我最不确定的代码方面的部分)?谢谢! – GonzoKnight 2011-05-10 17:46:30

+0

@GonzoKnight:你基本上使用'FileUpload'控件上的'FileBytes'属性(与其他属性一起确定类型,大小,文件是否存在等)。这里有一个简化的例子:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filebytes.aspx – David 2011-05-10 17:48:34

+0

我会尽力的!感谢您及时的回复。 – GonzoKnight 2011-05-10 17:49:15

相关问题