2013-01-16 132 views
0

我有一個路徑(存儲爲字符串) - 例如\\documents\doc1.txt。我正在嘗試用字符串路徑表示的文件初始化HttpPostedFileBase類型的變量。我該怎麼做? 我已經看過類似的方法C#:從文件路徑初始化HttpPostedFileBase(字符串)

Model.File[count] = File.Open(item.PictureDirectory, FileMode.Open); 

但這些返回System.io.filestream對象。

FileStream file = File.OpenRead(filepath); 

但我該如何將其轉換爲httppostedfilebase?

我試圖做的正是張貼here

回答

0

首先,在其他問題鏈接,具有需要HttpPostedFileBase作爲輸入,然後要求你的方法來發送文件自動傳輸爲HttpPostedFileBase,建議您需要重構該方法。在Pommy的例子中,或許輸入Stream會更合適?

現在,如果你絕對必須有一個HttpPostedFileBase的實例,這就是你的目標。 The class is abstract,所以你永遠不會直接構造它。相反,您需要構建一個繼承類。在標準庫中,HttpPostedFileWrapper繼承,並將HttpPostedFile作爲constructor input

但是,這裏是擦,HttpPostedFile的構造函數是內部的,所以在System.Web庫之外,你不是直接構造一個實例。

您的選項則是:

  1. 找到一個工廠,或在一些System.Web程序等方法,將構造一個HttpPostedFile實例爲你(我懷疑是你不會發現)。
  2. 實現您自己的基類繼承類HttpPostedFileBase。這應該很簡單,它只是一個小類,根據你的代碼使用它,你可能甚至不需要實現所有的方法。
  3. 我推薦的方法,如果可能的話 - 將代碼重構爲而不是使用HttpPostedFileBase,並且用Stream代替。
+0

感謝您的輸入。我正在使用html文件上傳器來上傳和顯示上傳的文件。如您所知,出於安全目的,當我僅顯示現有路徑時,文件的路徑不會顯示。不幸的是,當循環瀏覽文件時,外觀看起來似乎不讀取文件上傳器中預加載的文件。到目前爲止,我使用HttpPostedFileBase讀取文件。因此,有了路徑,我正在尋找一種方法來初始化循環讀取的httppostedfilebase。 – jpo

+0

所以你說你有一個循環顯示一個基於HttpPostedFileBase實例集合的文件名列表?爲什麼不改變循環來獲取文件名列表作爲輸入? – Snixtor

+0

我會試一試。我有一些文件上傳者的觀點。有些預先加載了文件,其他則沒有。循環通過所有文件來抓住它們。我首先嚐試了Httppostedfilesbase,因爲Web上的大多數資源都使用此文件類型來上傳文件。 – jpo