2010-02-06 13 views
6

मैं पहली बार परेशान था कि क्यों कुछ फाइलें कुछ उपयोगकर्ताओं के लिए अपलोड नहीं कर रही थीं और मुझे पता चला कि यह वह सब था जो क्रोम का उपयोग नहीं कर रहा था, जिस ब्राउज़र का मैं परीक्षण कर रहा था।फ़ायरफ़ॉक्स, क्रोम के साथ एक माइम प्रकार असंगतता क्यों है?

मूल रूप से मैं यह सुनिश्चित करने के लिए एक फ़ाइल जांच कर रहा हूं कि वे केवल एमपी 3 अपलोड करने में सक्षम हैं।

यह क्रोम के लिए काम कर रहा था, लेकिन फ़ायरफ़ॉक्स नहीं।

if ($_FILES['uploaded']['type']=="audio/mp3") 

यह फ़ायरफ़ॉक्स के लिए काम कर रहा था, लेकिन क्रोम नहीं।

$_FILES['uploaded']['type']=="audio/mpeg" 

क्या कोई यह समझा सकता है कि यह क्यों हो रहा है? मुझे लगता है कि दोनों ब्राउज़र या तो समझने में सक्षम होंगे या ... क्या कोई अन्य ब्राउज़र है जो मुझे इस तरह के स्पर्शशील माइम प्रकारों के बारे में चिंता करने की आवश्यकता हो सकती है?

संपादित करें: यदि पेक्का सुझाव दिया गया है, तो एक निश्चित माइम प्रकार की जांच करने का सबसे अच्छा तरीका क्या होगा?

+0

अपना संपादन पुन: संपादित करें मेरा संपादित उत्तर देखें। –

+0

टेक, क्या आप इस बारे में निश्चित हैं कि यह क्रोम के लिए काम कर रहा था, लेकिन फ़ायरफ़ॉक्स नहीं। ऑडियो/एमपी 3 "? क्योंकि यहां मौजूदा ब्राउज़र संस्करणों पर, मैं फ़ायरफ़ॉक्स पर रिवर्स - ऑडियो/एमपी 3 काम करता हूं लेकिन क्रोम नहीं। – ChrisJJ

उत्तर

5

w3schools के अनुसार, audio/mpeg सही प्रकार है। लेकिन इससे कोई फर्क नहीं पड़ता, एमआईएम प्रकार भिन्न हो सकते हैं, फाइलों की जांच करते समय आप बिल्कुल भरोसा नहीं कर सकते हैं। असंगतता नियम हैं, और उम्मीद की जा सकती है।

एक एमपी 3 फ़ाइल की पहचान करने के लिए, हो सकता है getid3 पैकेज आप मदद कर सकते हैं:

getID3() एक PHP स्क्रिप्ट है कि MP3s & अन्य मल्टीमीडिया फ़ाइल स्वरूपों से उपयोगी जानकारी निकालता है।

संपादित करें: IANA MIME प्रकार here के एक अधिकारी सूची है। एमपी 3 का कोई उल्लेख नहीं है, इसलिए यह क्रोम के हिस्से पर छोटी गाड़ी का व्यवहार है।

संपादित करें 2: सर्वर साइड पर आपका सबसे अच्छा शर्त एक फ़ाइल के MIME प्रकार निर्धारित करने के लिए finfo विस्तार है। यह "सामग्री स्नीफिंग" द्वारा फ़ाइल के प्रकार को निर्धारित करने का प्रयास करता है, डेटा के पहले कुछ बाइट्स में कुछ फ़ाइल प्रकारों की विशिष्ट विशेषताओं की तलाश करता है। इस प्रक्रिया में, एमआईएमई प्रकार भी भिन्न हो सकते हैं, लेकिन कम से कम वे एक ही सर्वर पर सुसंगत हैं, इसलिए आपके पास ब्राउज़र समस्याएं और नहीं रहेंगी।

+1

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

3

हर ब्राउज़र W3C मानकों थोड़ा अलग ढंग से सभी डेवलपर्स की चिढ़ (#rant) के लिए बहुत कुछ लागू कर सकते हैं, ...

एक उपयोगकर्ता द्वारा उत्पन्न मेटा जानकारी पर भरोसा/ब्राउज़र अत्यधिक अविश्वसनीय और सिफारिश नहीं है। यदि यह आपकी एकमात्र सुरक्षा/स्वच्छता तंत्र है तो कोई व्यक्ति आपके सिस्टम को नुकसान पहुंचाने की इच्छा रखने वाले व्यक्ति को == "ऑडियो/एमपीईजी" के कस्टम अनुरोध के साथ मेटा प्रकार फ़ील्ड मैन्युअल रूप से दर्ज कर सकता है, फिर किसी भी प्रकार की निष्पादन योग्य फ़ाइल अपलोड कर सकता है। यदि आप वास्तव में यह सुनिश्चित करना चाहते हैं कि इसे अपने स्थायी संग्रहण/उत्पादन प्रणाली में स्वीकार करने से पहले अपलोड किए जाने के बाद सर्वर पक्ष पर डेटा की पूरी तरह से जांच करनी पड़े। या कम भयावह नोट पर .. एक अलग ब्राउज़र वाला उपयोगकर्ता जिसने पहले परीक्षण नहीं किया है, वह कानूनी एमपी 3 फ़ाइल अपलोड करना चाहता है लेकिन यह अपने माइम प्रकार को ऑडियो/एमपीईजी या ऑडियो/एमपी 3 के रूप में घोषित नहीं कर सकता है और फिर आप उन्हें एक्सेस से इनकार कर देंगे प्रणाली के लिए ...

-2

ऑडियो टैग

<audio controls="controls" autoplay="true"> 
         <source id="webm" src="Mash Up 2011 19 songs in 1 DJ Got Us Falling In Love Mandu DeeJay Remix.ogg" type="audio/ogg" /> 
         <source id="webm" src="Mash Up 2011 19 songs in 1 DJ Got Us Falling In Love Mandu DeeJay Remix.mp3" type="audio/mp3" /> 
         <source id="webm" src="Mash Up 2011 19 songs in 1 DJ Got Us Falling In Love Mandu DeeJay Remix.webm" type="audio/webm" /> 
         <!--[if lt IE 9]> 
         <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="150" height="38" id="niftyPlayer1" align="right"> 
         <param name=movie value="niftyplayer.swf?file=Mash Up 2011 19 songs in 1 DJ Got Us Falling In Love Mandu DeeJay Remix.mp3&as=1"> 
         <param name=quality value=high> 
         <param name=bgcolor value=#471313> 
         <embed src="niftyplayer.swf?file=Mash Up 2011 19 songs in 1 DJ Got Us Falling In Love Mandu DeeJay Remix.mp3&as=1" quality=high bgcolor=#471313 width="150" height="38" name="niftyPlayer1" align="right" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> 
         </embed> 
         </object> 
         <!--<![endif]--> 
        </audio> 

वीडियो टैग

<video width="400" height="300" controls="controls" poster="img/poster.png" > 
      <source id="3gp" src="wedding1.3gp" type="video/3gp" /> 
      <source id="mp4" src="perfectparties/weddingDroid.mp4" type="video/mp4" /> 
      <source id="webm" src="wedding1.webm" type="video/webm" /> 
      <source id="mp4" src="perfectparties/wedding1.mp4" type="video/mp4" /> 
      <source id="ogv" src="perfectparties/wedding1.ogv" type="video/ogv" /> 

      <!--[if lt IE 9]> 
      <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="300"> 
       <param name="autoplay" value="false"> 
       <param name="movie" value="wedding1.swf"> 
       <param name="quality" value="high"> 
       <param name="wmode" value="opaque"> 
       <param name="swfversion" value="6.0.65.0"> 
       <param name="expressinstall" value="Scripts/expressInstall.swf"> 
       </object> 
       <!--<![endif]--> 
</video> 


<script type="text/javascript"> 
swfobject.registerObject("FlashID"); 
</script> 

यह सभी स्वरूपों के माध्यम से काम की आवश्यकता है ...

सबसे महत्वपूर्ण करें कि आपके सिस्टम प्रशासक की अनुमति दी गई माइम प्रकार इस्तेमाल किया जा करने के लिए कर सर्वर/रूट/DOMAIN पर। यह सबसे बड़ी असंगतता है लेकिन यह आईई सहित सभी ब्राउज़रों में काम करता है।

+0

प्रश्न फ़ाइल अपलोड के बारे में बात कर रहा है, न कि मीडिया तत्वों। – Quentin

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