2009-08-12 58 views
0

我有一個允許用戶上傳word和pdf文檔的應用程序。我的模型中還有一個類收集關於文件的一些元數據(即文件大小,內容類型等)。將HttpPostedFileBase作爲參數傳遞

我要集中一些「保存」功能(包括保存元數據到數據庫中,並保存實際的文件服務器)。我想將HttpPostedFileBase傳遞給我的服務層,然後使用內置的.SaveAs(文件名)功能。但是,我似乎無法弄清楚如何將文件類型傳遞給另一種方法。我已經試過以下:

public ActionResult Index(HttpPostedFileBase uploadedDocument) 
{ 
    string fileName = "asdfasdf"; 

    SomeClass foo = new SomeClass(); 

    //this works fine 
    uploadedDocument.SaveAs(fileName) 

    //this does not work 
    foo.Save(uploadedDocument, fileName); 
} 

public class SomeClass 
{ 
    public void Save(HttpPostedFile file, string fileName) 
    { 
     //database save 
     file.SaveAs(fileName); 
    } 
} 

當我嘗試通過HttpPostedFile插入SomeClass的保存方法,有一個編譯器錯誤(因爲在上面,uploadedDocument的類型是HttpPostedFileBase的,不HttpPostedFile)。

但是,如果我嘗試將uploadedDocument投射到HttpPostedFile,它不起作用。

所以,具體而言,我怎樣才能將HttpPostedFileBase傳遞給另一個方法?或者,更一般地說,如果我要將HttpPostedFileBase.InputStream傳遞給另一個方法,那麼如何將該文檔保存到服務器?請注意,文檔不是圖像,我不會將響應傳輸給用戶,因此寫入響應流並不合適......我想。

回答