2011-06-04 6 views
8

मुझे एक साधारण डब्ल्यूसीएफ सेवा मिली है जो ग्राहकों/उपभोक्ताओं को छवि, ऑडियो या वीडियो फ़ाइलों को अपलोड करने देती है। अपलोड के बाद, सेवा फ़ाइल का विश्लेषण करने के लिए माना जाता है और किसी भी तरह निम्न विशेषताओं को पुनः प्राप्त:विशिष्ट फ़ाइल विशेषताओं को प्राप्त करना

छवि: चौड़ाई, ऊंचाई, तारीख लिया, प्रोग्राम का उपयोग किया

ऑडियो: क्रम, कलाकार, एल्बम, शैली, बिटरेट, प्रकाशन वर्ष

वीडियो: क्रम, चौड़ाई, ऊंचाई, फ़्रेम/सेकंड, वीडियो बिटरेट, ऑडियो बिटरेट

जाहिर विंडोज हो और बहुत आसानी से इन विशेषताओं को प्रदर्शित कर सकते हैं, लेकिन मैं इसे कैसे सी # में क्या करते हो?

+2

के संभावित डुप्लिकेट [पढ़ें/लिखें 'विस्तारित' फ़ाइल गुण (सी #)] (http://stackoverflow.com/questions/220097/read-write-extended-file-properties-c) – AxelEckenberger

उत्तर

7

this thread.

की शालीनता मैं इस बढ़ाया विशेषताओं सहित विशेषताओं का सभी फाइल हो जाता है की पुष्टि कर लें।

अपनी परियोजना में 'संदर्भ जोड़ें' के लिए जाने -> कॉम -> 'माइक्रोसॉफ्ट शैल नियंत्रण और ऑटोमेशन'

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

public static void Main(string[] args) 
{ 
    List<string> arrHeaders = new List<string>(); 

    Shell32.Shell shell = new Shell32.Shell(); 
    Shell32.Folder objFolder; 

    objFolder = shell.NameSpace(@"C:\temp\testprop"); 

    for(int i = 0; i < short.MaxValue; i++) 
    { 
     string header = objFolder.GetDetailsOf(null, i); 
     if (String.IsNullOrEmpty(header)) 
      break; 
     arrHeaders.Add(header); 
    } 

    foreach(Shell32.FolderItem2 item in objFolder.Items()) 
    { 
     for (int i = 0; i < arrHeaders.Count; i++) 
     { 
      Console.WriteLine("{0}\t{1}: {2}", i, arrHeaders[i], objFolder.GetDetailsOf(item, i)); 
     } 
    } 
} 
+1

इस समाधान है कि ध्यान रखें विंडोज एक्सपी पर काम नहीं करता है। XP से Shell32 तक पहुंचने पर आपको COM अपवाद मिलता है। –

+1

मेरे सर्वोत्तम ज्ञान/अनुभव के लिए, यह XP पर ठीक काम करता है। आप क्या समस्या देख रहे हैं? – Khepri

2

उस जानकारी तक पहुंचने का सबसे आसान तरीका यह है कि (एक्सप्लोरर) शैल आपके लिए ऐसा करे और इसके लिए पूछें (Windows Property System के माध्यम से)। और सी # से ऐसा करने का सबसे आसान तरीका शायद Windows API Code Pack for .NET का उपयोग करना है।

विशेष रूप से आप संपत्ति स्टोर तक पहुंच प्राप्त करना चाहते हैं। प्रारंभ करने में सहायता के लिए, PropertiesEditDemo प्रोजेक्ट पर नमूने फ़ोल्डर में देखें।

आप फ़ाइल के लिए सभी मेटाडेटा पढ़कर इसे स्वयं कर सकते हैं, लेकिन समस्या यह है कि आपके प्रोग्राम को सभी उपलब्ध फ़ाइल प्रकारों के लिए सभी उपलब्ध मेटाडेटा को जानना होगा। मैं आम तौर पर उस ज्ञान के लिए शैल पर लटकना पसंद करता हूं।