2013-09-02 6 views
5

पर कॉपी करें मैं एक ड्रैग और ड्रॉप क्षेत्र बनाने की कोशिश कर रहा हूं जो डेटा प्राप्त करेगा वेबकिट GetAsEntry द्वारा आइटम को ट्रांसफर करें और जांचें कि प्रविष्टि निर्देशिका या फ़ाइल है या नहीं।एक फ़ाइलसूची बनाएं और इसे एक फ़ाइल इनपुट

मैं फिर फ़ाइलों को फ़ाइललिस्ट में बनाने में सक्षम होना चाहता हूं और उसे फ़ाइल इनपुट में कॉपी करना चाहता हूं (जिसे पोस्ट करने से पहले सत्यापित और प्राप्त किया जाएगा)।

JSFiddle

function handleDrop(event) { 
     event.preventDefault(); 
     event.dataTransfer.dropEffect = 'copy'; 
     var length = event.dataTransfer.items.length; 
     var elFileInput = document.getElementById('File'); 
     for (var i = 0; i < length; i++) { 
      var entry = event.dataTransfer.items[i].webkitGetAsEntry(); 
      if (entry.isFile) { 
       convertFilesToFileObjects(entry);   
      } 
      else if (entry.isDirectory) { 
       var dirReader = entry.createReader(); 
       dirReader.readEntries(function(entries) { 
        for (var j = 0; j < entries.length; j++) { 
         convertFileEntrysToFileObjects(entries[j]); 
        } 
       }); 
      } 
     } 
     function convertFileEntrysToFileObjects(fileEntry) {   
      var addFileToInput = function (file) { 
       console.log(file); 
       //elFileInput.files = event.dataTransfer.files; 
       //Need to make a FileList and populate it with Files. 
      };  
      if (fileEntry.isFile) { 
       fileEntry.file(function (addFileToInput, file) { 
        addFileToInput(file); 
       }.bind(this, addFileToInput)); 
      } 
     } 
    } 

मैं HTMLInputElement में FileList करने के लिए एक फ़ाइल की प्रतिलिपि नहीं कर सकते हैं यह केवल पढ़ने के लिए W3 FileList Interface

है मैं प्रोटोटाइप का उपयोग कर और, मैं हेवन वस्तुओं का विस्तार करके एक FileList वस्तु बनाने की कोशिश कर पर अटक कर रहा हूँ जेएस विरासत और प्रोटोटाइप के आसपास अभी तक मेरे सिर को लपेटा नहीं है।

क्या मैं फ़ाइललिस्ट ऑब्जेक्ट बनाने और फ़ाइलों के साथ इसे पॉप्युलेट करना भी संभव है, फिर इसे इनपुट एलीमेंट पर कॉपी करें?

संपादित: गलत JSFiddle लिंक।

+0

प्रासंगिक: http://stackoverflow.com/questions/8006715/drag-drop-files-into-standard-html-file-input यह इन दिनों, लेकिन केवल एक असली 'FileList के साथ संभव लगता है 'और आप उन्हें बनाने के लिए प्रतीत नहीं कर सकते हैं ... – Rudie

उत्तर

-2

फ़ाइल फ़ाइल में फ़ाइल कॉपी करने की आवश्यकता क्यों है?

इसके बजाय FileReader का उपयोग करें। लेकिन भेजने से पहले एक फ़ाइल को मान्य करना एक अच्छा विचार नहीं है। सुरक्षा के लिए, आपको इसे सर्वर की तरफ करना चाहिए। आप पहले फ़ाइल को मान्य कर सकते हैं, लेकिन आपको प्राप्त होने पर फ़ाइल को फिर से सत्यापित करना होगा।

https://developer.mozilla.org/en-US/docs/Web/API/FileReader?redirectlocale=en-US&redirectslug=DOM%2FFileReader

+1

मैं एमवीसी 3 में एनोटेशन का उपयोग कर HtmlInputElement पर क्लाइंट और सर्वर-साइड सत्यापन दोनों कर रहा हूं। फॉर्म HttpPostedFileBase क्लास के रूप में पोस्ट किया गया है और नियंत्रक में संभाला गया है। मैं इसके बजाय एक फ़ाइल रीड का उपयोग करने और XMLHttpRequest का उपयोग कर फ़ाइलों को पोस्ट करने के बारे में सोच रहा हूं, लेकिन अगर मैं इसे काम पर ला सकता हूं तो मैं खुश रहूंगा। –

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