2011-12-05 41 views
1

我想在類文件中保存一個文件。 我在寫附件用戶控件。在類中保存文件的最佳方式

通過上傳控件上傳文件後,我想將其保存在類中,然後再上傳SharePoint中的文件。

用戶可以上傳多個文件。

只有當用戶點擊save按鈕後,我會將所有文件和其他數據,文件保存到SharePoint和其他數據到數據庫。

這裏是我的類

public class Document : 
    { 
     public string documentName, documentPath, spServerURL, spDocumentLibraryURL; 
     public DateTime lodegmentDate; 
     public System.Web.HttpPostedFile postedFile; 
    } 

我應該如何處理呢?可以使用httpPostedFile嗎?在更新期間,我可以將SPFile轉換爲httpPostedFile嗎?

+0

「hold a file」是什麼意思? – Oded

+0

如果你打算保存多個文件,你應該使用HttpPostedFile的多個實例(或任何其他可以容納文件的對象) – Shai

+0

我不認爲'InputStream'會喜歡存儲在Session中,所以請閱讀將流存儲到該「Document」中的'byte []'流中。 –

回答

1

將文檔保存在內存中並不是Web服務器內存的有效使用。 更好地將其存儲在臨時數據庫或文件共享中...

但是,如果可以避免,我不會推薦自己寫這個。 試試看Telerik的RadUpload控制,他們甚至會給你60天的試用期。

+0

非常感謝! – kevin

2

我們處理這個問題的方式是當文件上傳時,它將保存在一個基於GUID的臨時文件名的知名目錄中。然後將臨時文件名和原始的上傳文件名存儲在我們班的FileDetails列表中。然後我們的課程序列化到頁面的ViewState,但它也可以存儲在會話狀態(如果用戶打開多個頁面或使用相同登錄名登錄到多臺計算機,我不建議這樣做)。

當按下保存按鈕時,我們循環訪問我們的類中的FileDetails列表,從臨時目錄中檢索每個文件,並將其發送到共享點(或任何需要去的地方)。

我們還將上傳的文件綁定到網格上,以便用戶可以看到上傳文件的列表,如果他們想刪除文件,他們可以在處理之前檢查網格中的一個框(已刪除)文件。

請注意,此過程還可以支持自動解壓縮壓縮文件:如果您檢測到上傳的文件是壓縮文件,則可以將每個文件解壓縮到臨時目錄,併爲每個文件添加一個條目以列出文件班上。這可能會爲您的用戶節省很多時間。

+0

我可以使用Stream而不是HttpPostedFile嗎? – kevin

+0

您不應將Stream或HttpPostedFile存儲在將以會話狀態存儲的類中。只需將文件提取到Web服務器中的磁盤上,您就可以輕鬆獲得該文件。 –

+0

非常感謝,我現在就試試。 – kevin

相關問題