2009-10-22 16 views
10

मेरे पास पृष्ठ में से किसी एक पर फ़ाइल कार्यक्षमता अपलोड है। मैं जावास्क्रिप्ट का उपयोग कर फ़ाइल के विस्तार की जांच करता हूं। अब मैं उपयोगकर्ता को 1 एमबी से अधिक फ़ाइल अपलोड करने से प्रतिबंधित करना चाहता हूं। क्या जावास्क्रिप्ट का उपयोग कर फ़ाइल अपलोड आकार की जांच कर सकते हैं।सरल जावास्क्रिप्ट का उपयोग करके फ़ाइल का अपलोड आकार कैसे प्राप्त किया जा सकता है?

मेरे कोड वर्तमान में इस तरह दिखेगा:

<script language="JavaScript"> 
function validate() { 
    var filename = document.getElementById("txtChooseFile").value; 
    var ext = getExt(filename); 
    if(ext == "txt" || ext == "csv") 
     return true; 
    alert("Please upload Text files only."); 
    return false; 
} 

function getExt(filename) { 
    var dot_pos = filename.lastIndexOf("."); 
    if(dot_pos == -1) 
     return ""; 
    return filename.substr(dot_pos+1).toLowerCase(); 
} 
</script> 
+0

http://stackoverflow.com/questions/547292/how-to-retrieve-size-of-file – geowa4

+3

एक गलत जवाब क्यों स्वीकार देखते हैं? दूसरा उत्तर देखें = यह संभव है! – Darren

+0

@ पंकजखुराना - जब आपने पांच साल पहले उत्तर स्वीकार किया था, तो आपके द्वारा चुने गए उत्तर सही थे। आज यह मामला नहीं है, क्या आप इस प्रश्न पर वापस आ सकते हैं और स्वीकार्य उत्तर को आधुनिक में बदल सकते हैं? – Quentin

उत्तर

3

अन्य फ़ाइल नाम प्राप्त वहाँ आप इसके आकार सहित जावास्क्रिप्ट में फाइल के बारे में किसी भी अन्य विवरण प्राप्त करने के लिए कोई रास्ता नहीं है।

इसके बजाय आपको एक बड़े पैमाने पर अपलोड को अवरोधित करने के लिए सर्वर-साइड स्क्रिप्ट को कॉन्फ़िगर करना चाहिए।

+2

इसके अलावा, भले ही आप सर्वर-साइड की जांच कर सकें, वैसे भी दुर्भावनापूर्ण उपयोगकर्ताओं को अपना स्वयं का फॉर्म लिखने के लिए कुछ भी नहीं है जो एक ही स्थान पर पोस्ट करता है। –

+6

नीचे उत्तर सही है, यह गलत जवाब है –

+2

@ डोमिनिकरोडर मैं मानता हूं कि आपको सुरक्षा के लिए सर्वर-साइड पर फ़ाइल आकार की जांच करनी होगी। लेकिन सुविधा के लिए (जो मुझे लगता है कि ओपी क्या चल रहा था), उपयोगकर्ता को पहले से ही यह जानना बेहतर होगा कि फ़ाइल को अपलोड करने के लिए इंतजार करने के बाद उन्हें उनकी 1 GiB फ़ाइल स्वीकार नहीं की जाएगी। –

0

ब्राउज़र-विशिष्ट कोड का उपयोग करके यह संभव हो सकता है। TiddlyWiki के स्रोत पर नज़र डालें, जो विंडोज स्क्रिप्टिंग होस्ट (आईई), एक्सपीकॉम (मोज़िला), आदि में हुक करके उपयोगकर्ता की हार्ड ड्राइव पर खुद को सहेजने का प्रबंधन करता है।

0

मुझे नहीं लगता कि कोई तरीका है एक वेब पेज से सादा जेएस के साथ ऐसा कर रहा है।
शायद ब्राउज़र एक्सटेंशन के साथ, लेकिन किसी पृष्ठ से जावास्क्रिप्ट सुरक्षा कारणों से फाइल सिस्टम तक नहीं पहुंच सकता है।

फ्लैश और जावा के समान प्रतिबंध होना चाहिए, लेकिन हो सकता है कि वे थोड़ा कम सख्त हों।

0

संभव नहीं है। क्लाइंट साइड स्क्रिप्ट को चलाने की अनुमति देने के लिए एक प्रमुख सुरक्षा चिंता होगी जो उपयोगकर्ता की हार्ड ड्राइव से फ़ाइल जानकारी को पढ़ और समाप्त कर सकती है।

+1

यह फ़ायरफ़ॉक्स 3.6 में समर्थित है। एचटीएमएल 5 का देखें। मैंने उस मॉड्यूल का उपयोग किया है, और यह किसी भी प्रकार की फ़्लैश ऑब्जेक्ट्स या आईफ्रेम ट्रिकरी की आवश्यकता के बिना AJAX के माध्यम से अपलोड करने के लिए बहुत अच्छा काम करता है। – Matthew

+0

क्षमा करें, लिंक स्पष्ट रूप से http://www.w3.org/TR/FileAPI/ होना चाहिए। – Matthew

27

http://www.w3.org/TR/FileAPI/ देखें। यह फ़ायरफ़ॉक्स 3.6 द्वारा समर्थित है; मुझे किसी अन्य ब्राउज़र के बारे में पता नहीं है।

एक <input id="fileInput" type="file" /> बस की onchange घटना के भीतर:

var fi = document.getElementById('fileInput'); 
alert(fi.files[0].size); // maybe fileSize, I forget 

तुम भी एक स्ट्रिंग के रूप फ़ाइल की सामग्री को वापस कर सकते हैं, और इसके आगे। लेकिन फिर, यह केवल फ़ायरफ़ॉक्स 3.6 के साथ काम कर सकता है।

0

यहाँ देखें: कह

http://www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html

के रूप में सभी लोगों को इस सर्वर साइड किया जा सकता है, वे बिल्कुल स्पॉट कर रहे हैं पर यह होता है।

मेरे मामले में हालांकि अधिकतम आकार मैं 128 एमबी को छोड़कर छोड़ दूंगा, यदि कोई उपयोगकर्ता 130 एमबी कुछ अपलोड करने का प्रयास करता है तो उसे 5 मिनट के अपलोड समय का इंतजार नहीं करना चाहिए ताकि यह पता चल सके कि यह बहुत बड़ा है इसलिए मुझे करना है प्रयोज्यता के लिए पृष्ठ जमा करने से पहले एक अतिरिक्त जांच।

2

इन उत्तरों के अधिकांश रास्ते बाहर के तारीख कर रहे हैं। फ़ाइल एपीआई का समर्थन करने वाले किसी भी ब्राउज़र में फ़ाइल आकार क्लाइंट-साइड निर्धारित करना वर्तमान में संभव है। इसमें आईई 9 और पुराने के अलावा अन्य सभी ब्राउज़र्स शामिल हैं।

5

अब शुद्ध जावास्क्रिप्ट का उपयोग करके फ़ाइल का आकार प्राप्त करना संभव है। लगभग सभी ब्राउज़र समर्थन FileReader, जिसे आप फ़ाइल आकार को पढ़ने के लिए उपयोग कर सकते हैं साथ ही आप सर्वर पर फ़ाइल अपलोड किए बिना छवि दिखा सकते हैं।link

कोड:

var oFile = document.getElementById("file-input").files[0]; // input box with type file; 
    var img = document.getElementById("imgtag"); 
    var reader = new FileReader(); 
    reader.onload = function (e) { 
      console.log(e.total); // file size 
      img.src = e.target.result; // putting file in dom without server upload. 

    }; 
    reader.readAsDataURL(oFile); 

आप नीचे दिए गए कोड का उपयोग कर फ़ाइल वस्तु से सीधे फ़ाइल आकार प्राप्त कर सकते हैं।

var fileSize = oFile.size; 
संबंधित मुद्दे

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