2012-04-30 17 views
22

में काम नहीं कर रहे केवल पीएनजी छवि फ़ाइलों को स्वीकार करने के लिए मेरे इनपुट प्रकार = "फ़ाइल" को प्रतिबंधित करने के लिए कैसे करें मैं इनपुट प्रकार = "फ़ाइल" का उपयोग कर रहा हूं, अब मेरी आवश्यकता यह है कि मैं केवल पीएनजी छवियों का चयन करना चाहता हूं, यही वह समय है जब मैं एक "पीएनजी" फ़िल्टर ब्राउज़ करें का चयन करें।फ़ायरफ़ॉक्स

मैंने www.w3schools.com/tags/att_input_accept.asp का उल्लेख किया है और नीचे कोड मैं उपयोग कर रहा हूं, यह क्रोम के साथ ठीक काम करता है लेकिन फ़ायरफ़ॉक्स और आईई के साथ काम नहीं करता है।

कृपया कोई मुझे यह समझने में सहायता कर सकता है कि मुझे क्या गलत करना चाहिए?

<h2>Below uses accept="image/*"</h2> 
<input type="file" name="pic1" accept="image/*" /> 

<h2>Below I need to accept only for png</h2> 
<input type="file" name="pic1" accept="image/png" /> 

यहाँ आप देख सकते हैं, 'स्वीकार' विशेषता ठीक से प्रमुख ब्राउज़रों में से किसी का समर्थन नहीं करते यह http://jsfiddle.net/Jcgja/2/

+9

[w3fools] (http://w3fools.com) आपको बताएगा कि क्यों w3schools सभी चीजों के लिए वेब का सर्वोत्तम संसाधन नहीं है। – Oded

+0

आपको फ़ाइल प्रकार की * सर्वर साइड * सत्यापन की आवश्यकता होगी। मुझे नहीं लगता कि * सभी * ब्राउज़रों में ऐसा करने का कोई तरीका है। – mortb

+2

w3schools के साथ समस्या यह है कि वे Google में शीर्ष परिणामों में दिखाई देते हैं ताकि अधिकांश लोग वहां जाएं। – mortb

उत्तर

20

आपको जावा स्क्रिप्ट के माध्यम से इसे सत्यापित करने की आवश्यकता है। नीचे जावा स्क्रिप्ट सत्यापन

function CheckFileName() { 
     var fileName = document.getElementById("uploadFile").value 
     if (fileName == "") { 
      alert("Browse to upload a valid File with png extension"); 
      return false; 
     } 
     else if (fileName.split(".")[1].toUpperCase() == "PNG") 
      return true; 
     else { 
      alert("File with " + fileName.split(".")[1] + " is invalid. Upload a validfile with png extensions"); 
      return false; 
     } 
     return true; 
    } 
+0

धन्यवाद यह – Yasser

+2

काम करता है यदि फ़ाइल में एक से अधिक बिंदु हैं तो यह समाधान विफल हो जाएगा। उदाहरण के लिए: ** myfile.png.jpg ** फ़ाइल मान्य होगी और ** myfile.jpg.png ** एक अमान्य फ़ाइल होगी। – Ragnar

1

करने के लिए एक बेला कड़ी है। फ़ाइल प्रकार सही है या नहीं, अन्यथा झूठी लौटने पर यह सत्यापित करने के लिए आप ऑनसममिट ईवेंट पर फॉर्म पर जावास्क्रिप्ट सत्यापन का उपयोग कर सकते हैं।

इस विशेषता का सत्यापन उपकरण के रूप में उपयोग न करें। फ़ाइल अपलोड सर्वर पर मान्य होना चाहिए।

6

w3schools के उस पृष्ठ पर ब्राउज़र समर्थन जानकारी सही नहीं है।

तो आप इस पेज चेक करते हैं, जैसा कि आप देख accept विशेषता है कि यह फ़ायरफ़ॉक्स में लागू नहीं कर रहा है:

https://developer.mozilla.org/en/HTML/Element/Input

अद्यतन:
accept विशेषता अब फ़ायरफ़ॉक्स में कार्यान्वित किया जाता है, लेकिन उन नहीं जो कर हाल के संस्करण में अभी भी समर्थन नहीं होगा।

+3

यह अब वास्तविक नहीं है, यह समर्थित है क्योंकि फ़ायरफ़ॉक्स 16 –

1
<?php 
if ((($_FILES["pic1"]["type"] == "image/png") 
{ 
if ($_FILES["pic1"]["error"] > 0) 
{ 
echo "Error: " . $_FILES["pic1"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["pic1"]["name"] . "<br />"; 
echo "Type: " . $_FILES["pic1"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["pic1"]["size"]/1024) . " Kb<br />"; 
echo "Stored in: " . $_FILES["pic1"]["tmp_name"]; 
} 
} 
else 
{ 
echo "Invalid file"; 
} 
?> 

इस के लिए कोड सिर्फ फ़ाइल के प्रकार का सत्यापन किया जाता है। पूरी अपलोड स्क्रिप्ट नहीं।

0

आप एक फ़ाइल समारोह

filesChange() { 
     checkFile(); 
     } 
<script type="text/javascript"> 
function checkFile() { 
    var fileElement = document.getElementById("uploadFile"); 
    var fileExtension = ""; 
    if (fileElement.value.lastIndexOf(".") > 0) { 
     fileExtension = fileElement.value.substring(fileElement.value.lastIndexOf(".") + 1, fileElement.value.length); 
    } 
    if (fileExtension == "gif") { 
     return true; 
    } 
    else { 
     alert("You must select a GIF file for upload"); 
     return false; 
    } 
} 

0

के रूप में टिप्पणी में कहा की जावास्क्रिप्ट समारोह onChane घटना का उपयोग कर सकते, स्वीकार किए जाते हैं समाधान के साथ एक फ़ाइल नाम के साथ काम नहीं करेगा कई "।" इस में। इसे बेहतर तरीके से संभालना चाहिए, यह अधिक बग-सबूत और लचीला है, और आप सरणी संपादित करके स्वीकृत एक्सटेंशन प्रबंधित कर सकते हैं।

function checkFileExtension() { 
    var fileName = document.getElementById("uploadFile").value; 

    if(!fileName) 
     return false; 

    var extension = fileName.split("."); 
    if(extension && extension.length > 1){ 
     extension = [extension.length-1].toUpperCase(); 
     if (["PNG"].indexOf(extension) != -1) 
      return true; 
     else{ 
      alert("Browse to upload a valid File with png extension"); 
      return false; 
     } 
    } 
    else{ 
     alert("Browse to upload a valid File with png extension"); 
     return false; 
    } 
}