2014-05-23 10 views
5

मैं फ़ाइलों को अपलोड करने के लिए Dropzone.js का उपयोग कर रहा हूं। अब मैं एक दायर भरना चाहता हूं या नहीं, और यदि यह नहीं है तो अपलोड रद्द करें।यदि स्थिति पूरी नहीं हुई है तो Dropzone.js में अपलोड को रद्द/निरस्त कैसे करें?

मेरे एचटीएमएल कोड:

<input type="text" name="title" id="title" placeholder="Type the title of the album"> 
<form action="file-upload.cgi" enctype="multipart/form-data" class="dropzone" id="dropzoneform"></form> 

मेरे jQuery कोड:

Dropzone.autoDiscover = false; 
$('.dropzone').dropzone({ 
    acceptedFiles: 'image/jpeg', 
    init: function() { 
     this.on('sending', function() { 
      if ($('#title').val().length > 0) { 
       // just start automatically the uploading 
      } else { 
       // need a code to cancel the uploading 
      } 
     } 
    } 
}); 

मेरे द्वारा अपलोड की कैसे रद्द कर सकते हैं जब #title की लंबाई 0 है?

+0

क्या आपके पास एक रिसीवर फ़ंक्शन है जो फ़ाइल अपलोड करने के बाद ट्रिगर किया गया है? यदि हां, तो आप उस फ़ंक्शन में फ़ाइल-खालीपन की जांच कर सकते हैं और आवश्यक कार्रवाई कर सकते हैं? – SNag

+0

आप '.removeAllFiles()' पर कॉल कर सकते हैं। ** रेफरी: https: //github.com/enyo/dropzone/wiki/Remove-all-files-with-one-button** – dreamweiver

+0

@ स्ट्रीमवाइवर हाँ, मुझे यह कोड मिला, लेकिन मैं इसे अपने में लागू नहीं कर सकता । चाल क्या है? – netdjw

उत्तर

5

क्या इस

Dropzone.autoDiscover = false; 
$('.dropzone').dropzone({ 
    acceptedFiles: 'image/jpeg', 
    init: function() { 
     var that = this; 
     that.on('sending', function(file) { 
      if ($('#title').val().length <= 0) { 
       that.removeFile(file); 
      } 
     } 
    } 
}); 
+1

यह प्रश्न की तरह रद्द या रद्द/रद्द नहीं करता है –

+0

हालांकि यह वास्तव में प्रश्न का उत्तर नहीं देता है, मेरे पास इसकी आवश्यकता होती है। धन्यवाद! – Nieminen

22

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

$('.dropzone').dropzone({ 
    autoQueue: false, 
    /* The rest of your configuration options */ 
}); 

यह स्वचालित रूप से हर फ़ाइल सही होने के बाद यह उपयोगकर्ता द्वारा जोड़ा है अपलोड करने की कोशिश से Dropzone से बचाता है:

सबसे पहले, आप जब आप अपने dropzone प्रारंभ गलत पर autoQueue संपत्ति सेट करना होगा। इसका मतलब है कि अब आप वास्तव में फ़ाइलों को अपने आप को enqueue को प्रोग्राम के रूप में है, तो निम्न फ़ंक्शन का उपयोग किया है:

var yourDropzone = $('.dropzone'); 
yourDropzone.on("addedfile", function(file) { 
    if (/* some condition is met by your file */) { 
     yourDropzone.enqueueFile(file); 
    } 
} 

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

इस दृष्टिकोण का लाभ यह है कि अब हम वास्तव में चुन सकते हैं कि जब फ़ाइल को अपलोड किया जाता है, तो उसे कतार से हटाने की कोशिश करने के बजाय, ड्रॉपज़ोन एनक्यूड फाइलें भेजने की कोशिश कर रहा है।

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

+0

यह सही उत्तर है –

+1

मुझे इस घटना श्रोता को ड्रॉपज़ोन की "init" संपत्ति के अंदर रखना था और इसके बजाय this.on ("जोड़ाfile") का उपयोग करना पड़ा। कुछ कारणों से इसे बनाया जाने के बाद ड्रॉपज़ोन का संदर्भ देना और फिर जोड़ा गया ईवेंट सुनना काम नहीं कर रहा था। – lkgarrison

+0

इसके अतिरिक्त, मुझे $ ('। Dz-image-preview') जोड़ना पड़ा था। परीक्षण स्थिति को पास करने के बाद पूर्वावलोकन टेम्पलेट से पूर्वावलोकन div को हटाने के लिए हटाएं() को हटा दें। –

1

तो स्वीकार किए जाते हैं जवाब का समाधान इस त्रुटि फेंक:

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable

प्रयास करें

myDropzone.on("addedfile", function(file) { 
if (/* some condition is NOT met by your file */) { 
    myDropzone.removeFile(file); 
}}); 

यह स्वीकार किया जवाब और Protossoario के जवाब के बीच एक मिश्रण है। बिना फ़ाइल कतार में। स्वीकृत उत्तर वास्तव में मेरी कॉन्फ़िगरेशन में इस जेएस त्रुटि को फेंक रहा है।

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