2009-05-11 13 views
12

स्कॉट हंसेलमैन के ब्लॉग पर एक एमवीसी फ़ाइल को लागू करने की कोशिश करते समय example अपलोड करें।मैं System.Web.HttpPostedFileBase से System.Web.HttpPostedFile पर कैसे लगा सकता हूं?

foreach (string file in Request.Files) 
{ 
    HttpPostedFile hpf = Request.Files[file] as HttpPostedFile; 
    if (hpf.ContentLength == 0) 
     continue; 
    string savedFileName = Path.Combine(
     AppDomain.CurrentDomain.BaseDirectory, 
     Path.GetFileName(hpf.FileName)); 
    hpf.SaveAs(savedFileName); 
} 

मैं इसे VB.NET में बदला:

For Each file As String In Request.Files 
    Dim hpf As HttpPostedFile = TryCast(Request.Files(file), HttpPostedFile) 
    If hpf.ContentLength = 0 Then 
     Continue For 
    End If 
    Dim savedFileName As String = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.GetFileName(hpf.FileName)) 
    hpf.SaveAs(savedFileName) 
Next 

लेकिन मैं संकलक से गलत डाली अपवाद हो रही है:

Value of type 'System.Web.HttpPostedFileBase' cannot be converted to 'System.Web.HttpPostedFile'. 

मैं इस उदाहरण कोड के साथ मुसीबत में भाग गया हंसेलमैन ने 2008-06-27 को अपना उदाहरण पोस्ट किया, और मुझे लगता है कि यह उस समय काम करता था। एमएसडीएन में कोई समान उदाहरण नहीं है, तो क्या देता है?

उत्तर

27

बस इसके साथ एक HttpPostedFileBase के रूप में काम करें। ढांचा HttpPostedFileWrapper का उपयोग HttpPostedFile को HttpPostedFileBase की किसी ऑब्जेक्ट में कनवर्ट करने के लिए करता है। HttpPostedFile उन मुहरबंद वर्गों में से एक है जो यूनिट परीक्षण के लिए कठिन हैं। मुझे संदेह है कि उदाहरण के कुछ समय बाद लिखा गया था कि उन्होंने एमवीसी ढांचे में परीक्षण (एचटीपीपोस्टेडफाइलबेस) नियंत्रकों का परीक्षण करने की क्षमता में सुधार करने के लिए रैपर कोड लागू किया था। नियंत्रक पर HttpContext, HttpRequest, और HttpReponse गुणों के साथ इसी तरह की चीजें की गई हैं।

+0

यह काम किया, धन्यवाद। –

+2

अतिरिक्त जानकारी: यदि आप मेरे जैसे हैं और आप इस फ़ंक्शन को एक अलग प्रोजेक्ट में बना रहे हैं तो आपको HttpPostedFileBase को संदर्भित करने के लिए System.Web.Abstractions.dll फ़ाइल को शामिल करना होगा: http://efreedom.com/Question/1-1911151/CSharp-Reference-HttpPostedFileBase –

+0

@tvanfosson इस जानकारी की तलाश में है, क्यों HttpPostedFileBase HttpPostedFile के बजाय? क्या आपके पास एक लिंक है जिसे आप साझा कर सकते हैं? – codingbiz

4

उपयोग करने के लिए सही प्रकार HttpPostedFileBase है।

HttpPostedFileBase hpf = Request.Files[file]; 
+0

मुझे विश्वास है, लेकिन क्या आपके पास कोई संदर्भ है? मैं HttpPostedFileBase और HttpPostedFile के बीच के अंतर के बारे में थोड़ा और पढ़ना चाहता हूं। – Trevor

संबंधित मुद्दे