2013-10-12 4 views
6

मुझे "केवल छवियों की अनुमति है" मिल रही है और मैंने "file.PostedFile.FileName" भी काम नहीं किया है !!पोस्ट फ़ाइल एक्सटेंशन asp.net

इस कोड को एक अलग वर्ग में लिखा है ..

public static String UploadFile(FileUpload file, String type, out String filename) 
{ 
    String ext = System.IO.Path.GetExtension(file.FileName); 
    filename = ""; 
    if (file.PostedFile.ContentLength > 2000000) 
    { 
     return "File is larger than 2 MB"; 
    } 
    else if (type != "File") 
    { 
     if (ext.ToLower() != ".jpg" || ext.ToLower() != ".png" || ext.ToLower() != ".gif" || ext.ToLower() != ".jpeg") 
     { 
      return "Only images are allowed"; 
     } 
     else 
     { 
      filename = System.IO.Path.GetRandomFileName() + "_" + file.PostedFile.FileName; 
      String root = HttpContext.Current.Server.MapPath("~/Images/"); 
      file.SaveAs(root + type + "/" + filename); 
      return "Success"; 
     } 
    } 
    else 
    { 
     filename = System.IO.Path.GetRandomFileName() + "_" + file.PostedFile.FileName; 
     String root = HttpContext.Current.Server.MapPath("~/Files/"); 
     file.SaveAs(root + filename); 
     return "Success"; 
    } 
} 
+0

इस विधि के लिए आप किस प्रकार का फ़िकल पास कर रहे हैं? –

+0

क्या आप फ़ाइल का उपयोग नहीं कर सकते हैं। एक्सटेंशन() –

उत्तर

6

आपकी हालत गलत है, तो वह ऐसा होना चाहिए:

if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg") 
{ 
return "Only images are allowed"; 
} 
else 
{ 
///statement 
} 

या

if (ext.ToLower() == ".jpg" || ext.ToLower() == ".png" || ext.ToLower() == ".gif" || ext.ToLower() == ".jpeg") 
    { 

    ///statement 
    } 
    else 
    { 
return "Only images are allowed"; 
    } 
+1

@Anas .. संकलक बिंदु दृश्य से, दूसरा सबसे अच्छा है, आपको इसका उपयोग करना चाहिए। – NMathur

3

मान्य विस्तार जांच करने के लिए आपकी हालत तार्किक दृष्टि से गलत (हमेशा true का आकलन करती है)। यह (||&& बदल दिए जाते हैं) इस तरह होना चाहिए:

if (ext.ToLower() != ".jpg" && ext.ToLower() != ".png" && ext.ToLower() != ".gif" && ext.ToLower() != ".jpeg") 
{ 
    return "Only images are allowed"; 
} 
4

@ volpav का जवाब होगा अपनी समस्या को ठीक करें, लेकिन उस बड़े if समस्या को संभालने का सबसे साफ तरीका नहीं है।

स्वीकार्य एक्सटेंशन की एक सूची को परिभाषित करने के लिए और अधिक सुरुचिपूर्ण होगा और यह देखने के लिए जांच करें कि ext सूची में है या नहीं। इसके लिए फायदे यह होगा कि यदि आपको कभी भी वैध प्रकारों को बाद में बदलना है, तो यह बनाए रखना आसान है, और यदि आप वांछित हैं तो एक्सटेंशन एक्सटेंशन उपयोगकर्ता को निश्चित कर सकते हैं।

उदाहरण में नीचे मैं अपने वर्ग के लिए एक निरंतर (अच्छी तरह से केवल पढ़ने के लिए चर) कि सभी अपवादों के साथ एक सरणी में शामिल है परिभाषित करने रहा हूँ, और देखने के लिए परीक्षण करने के लिए करता है, तो ext यह के भीतर मौजूद है Contains() विस्तार विधि का उपयोग करें जब UploadFile

में मान्य
public static readonly string[] VALID_EXTENSIONS = 
    new string[4] { ".png", ".jpg", ".gif", ".jpeg" }; 

// in UploadFile ... 
    if (!VALID_EXTENSIONS.Contains(ext.ToLower())) { 
     return "Only images are allowed"; 
    } 

इसे उपर्युक्त कोड में स्थिर बनाकर, मैं यूआई में इस सूची का उपयोग यूआई में निर्दिष्ट करने के लिए कर सकता हूं ताकि उपयोगकर्ता अनुमान लगा सकें कि वैध छवि प्रकार क्या है (सभी के बाद, अन्य छवियां हैं आपके द्वारा शामिल किए गए लोगों की तुलना में प्रकार)।

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