2011-05-10 87 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

相關問題