2012-10-20 18 views
18

कैसे बदलें मेरी परियोजना में ब्लूंप jQuery File Upload का उपयोग करने का प्रयास कर रहा हूं। यह मेरी आवश्यकताओं को काफी अच्छी तरह से उपयुक्त बनाता है लेकिन प्लगइन बनाने और कॉन्फ़िगर किए जाने के बाद मुझे यूआरएल फ़ाइलों को गतिशील रूप से अपलोड करने की आवश्यकता है। मैंने जांच का एक अच्छा सौदा किया है, लेकिन, दुर्भाग्यवश, कुछ भी उपयोगी नहीं मिला। आम तौर पर, मेरे पास वास्तविक अपलोड को कवर करने वाली फ़ाइलों और फ़ाइल अपलोड लोड करने का एक बटन होता है। बुनियादी निर्माण इस तरह दिखता है:jQuery फ़ाइल अपलोड: अपलोड यूआरएल को गतिशील रूप से

$('[upload-button]').fileupload(new FileUploadConfig()) 

और विन्यास में ही:

function FileUploadConfig() { 

    // is set to a unique value for each file upload 
    this.url = 'temporary'; 
    this.fileInput = $('[upload-button]'); 

    //... some other code 
} 

बात मैं क्या करने की जरूरत इस config में यूआरएल को बदलने और उसके बाद data.submit() कहते हैं। मुझे पता चला गया है, कि इस विन्यास $.data() का उपयोग कर बचाया और इस तरह के कोड

// get the current fileupload configuration 
var config = $.data($('[upload-button]').get(0), 'fileupload'); 

// change the url configuration option 
config.options.url = file.link; 

//send a file 
data.submit(); 

साथ समस्या को हल करने हालांकि, इस तरह मैं चाहता था काम नहीं करता है की कोशिश की है।

इसे पूरा करने के तरीके पर कोई विचार?

उत्तर

3

मैं इस कार्य किया है उसे जब मैं true को autoupload की स्थापना और fileuploadstart कॉलबैक जुड़ कर कोई दूसरी आईडी परम के साथ एक यूआरएल के लिए एक फ़ाइल अपलोड करना चाहते थे:

<script type='text/javascript'> 
    $(function() { 
     'use strict'; 
     $('#fileupload').fileupload({ 
      url: 'originalurl/dest/1' 
      autoUpload: true    
     }).bind('fileuploadadd', function (e, data) { 
      var that = $(this).data('fileupload');    
      that.options.url = 'originalurl/dest/' + $("#selctedlocation").val(); 

     }); 
    }); 

+0

कर सकते हैं तो आप इस एक सा बताते हैं:

आप एक छिपा "dynamicURL" कहा जाता है इनपुट में गतिशील यूआरएल बचाया तो आप इस करना चाहिए मान लीजिए? जैसे आप इस स्क्रिप्ट और इस तरह डालते हैं। मैं php का उपयोग कर विभिन्न निर्देशिकाओं में सफलतापूर्वक अपलोड करने में सक्षम हूं लेकिन डाउनलोड/हटाएं काम करना बंद कर देता है।और मैं नई निर्देशिका चर पाने के लिए पोस्ट/प्राप्त नहीं करना चाहता हूं, मैं jquery/जावास्क्रिप्ट का उपयोग करना चाहूंगा। – VIDesignz

+0

काम नहीं कर रहा है, यहां तक ​​कि var = = (यह) .data ('fileupload') को बदलकर भी; var = = (यह) .डेटा ('blueimp-fileupload'); –

0

में जोड़ने के लिए डेवब्रिन का उत्तर:

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

https://github.com/blueimp/jQuery-File-Upload/wiki/Options

-1

हाय वहाँ यह करने के लिए एक सरल तरीका हो रहा है। मैंने अपना कोड नीचे रखा है। uplodify के आधार संस्करण यहाँ http://www.startutorial.com/articles/view/21

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

लेकिन फिर यदि मैं इसे बार-बार कॉल करता रहता हूं, तो स्क्रीन पर अधिक ब्राउज़िंग बटन दिखाई देंगे, इसलिए मैंने अपलोडिफ़ी को कॉल करने से पहले तत्व #file_uploadUploader को हटा दिया। तो मुझे लगता है कि समस्या हल हो गई है। कम से कम मेरे लिए :)

पिछले दो दिनों से इसके लिए खोज कर रहा था लेकिन अंततः इसे हल करने के लिए अच्छा लगता है।बी)


एचटीएमएल

<input id="file_upload" name="file_upload" type="file" /> 
  • jerry1
  • jerry3
  • jerry2

Jquery

$(document).ready(function() { 

var uploadfer = 'uploads/jerry2'; 


$("ul li").click(function(){ 
uploadfer = "uploads/"+$(this).text()+"/"; 
alert(uploadfer); 

$('#file_uploadUploader').remove(); 

$('#file_upload').uploadify({ 
'uploader' : 'js/uploadify.swf', 
'script' : 'upload.php', 
'cancelImg' : 'js/cancel.png', 
'folder' : uploadfer, 
'auto'  : true 
}); 


}); 

$('#file_upload').uploadify({ 
'uploader' : 'js/uploadify.swf', 
'script' : 'upload.php', 
'cancelImg' : 'js/cancel.png', 
'folder' : uploadfer, 
'auto'  : true 
}); 




}); 
20

बस इसे यहां पोस्टरिटी के लिए कैप्चर करना।

वर्तमान jQuery से अपलोड राजस्व में, ऐड (evt, डेटा) समारोह को ओवरराइड और डेटा वस्तु का यूआरएल गुण सेट:

fileupload({ 
    add: function(e, data) { 
     data.url = 'customURL' 
     ... 
    }, 
    ... 
} 
+0

Soooo सरल। सही समाधान! – Oktav

+0

यह यूआरएल पथ बदलता है जहां PHP फाइलें स्थित हैं। यह उस पैथ को नहीं बदलेगा जहां यूपीआईपी फाइलें जाती हैं। ईजी। यह संभव नहीं है, अगर मुझे केवल 1 सर्वर साइड स्क्रिप्ट चाहिए और उपयोगकर्ता चयन योग्य विकल्पों के आधार पर, फ़ाइलों को सर्वर पर विभिन्न निर्देशिकाओं पर अपलोड किया जाता है। – Nis

+0

पर्याप्त मेला। हो सकता है कि ओपी का सही जवाब न हो, लेकिन यह आपको एक कदम आगे ले जाता है। मेरे मामले में मैं पथ को बदलने के बारे में चिंतित नहीं था लेकिन अंत बिंदु (जैसे विभिन्न संसाधन प्रकार अलग-अलग अंतराल पर गए थे)। – Bill

1

यहाँ एक सामान्य उदाहरण है तुम ऐसा कैसे कर सकते हैं:

$('#fileupload').fileupload({ 
    url: initial_url, 
    done: function (e, data) { 
     $(this).fileupload('option', 'url', new_url); 
    } 
}); 

मैं अपलोड स्क्रिप्ट द्वारा दिए गए परिणाम के आधार पर यूआरएल को बदलने के लिए इसका उपयोग करता हूं, इसलिए मैंने पूर्ण कॉलबैक की शुरुआत में new_url = data.result.new_url सेट किया है।

0

यह करना चाहिए, (@ Aneon के जवाब के समान) मेरे लिए काम करने लगता है:

var file = { link: "http://thenewurl" }; 

// I used a form element to create the fileupload widget 
$('[upload-button]').fileupload("option", "url", file.link); 

// Submit the form 
$('[upload-button]').submit(); 

किसी भी बिंदु पर प्रपत्र को जमा करने के बाद इस समारोह कॉल नया यूआरएल

का उपयोग करेगा (मेरी जैसे ही छवि का चयन किया जाता है, कोड मैन्युअल सबमिट कॉल का परीक्षण नहीं करता है)।

1

davbryn के जवाब के अलावा: इस स्ट्रिंग

वर कि = $ (this) .data ('fileupload');

इस

वर कि $ = द्वारा प्रतिस्थापित किया जाना चाहिए (इस) .data ('blueimpFileupload');

+0

यह डेवब्रिन के उत्तर पर एक टिप्पणी के रूप में अधिक उपयुक्त होगा। –

+0

यह सही है हालांकि विकल्प बदलना हमें कहीं भी नहीं लगता है क्योंकि ऐसा लगता है कि यह श्रृंखला में बहुत देर हो चुकी है – Dex

0

तत्व से प्लगइन को अनधिकृत करें और फिर इसे एक नए यूआरएल के साथ पंजीकृत करें।

$('#pictureUpload, #pictureUpload *').unbind().removeData(); 

$('#pictureUpload').fileupload({ 
... 
}); 
0

आप .bind ('fileuploadsubmit') हिस्सा जोड़ने की जरूरत है।

function fnFileUpload(id, urlFunc, successurl) { 
    $(id).fileupload({ 
     url: urlFunc(), 
     dataType: 'json', 
     maxFileSize: 10000000, 
     singleFileUploads: true, 
     done: function (e, data) { 
      $(this).fileupload('option', 'url', urlFunc()); 
      if (data.result.respType == 'S') { 
       window.location.href = successurl; 
      } else { 
       toastr.error(data.result.respDesc, data.result.respTitle); 
       var progress = 0; 
       $('#progress .progress-bar').css(
        'width', 
        progress + '%' 
       ); 
      } 
     }, 
     progressall: function (e, data) { 
      var progress = parseInt(data.loaded/data.total * 100, 10); 
      $('#progress .progress-bar').css(
       'width', 
       progress + '%' 
      ); 
     } 
    }).bind('fileuploadsubmit', function (e, data) { 
     $(this).fileupload('option', 'url', urlFunc()); 
    }); 
} 
2

आप बाँधfileuploadadd घटना की जरूरत है: नीचे दिए गए उदाहरण देखें।

$('#fileupload').fileupload({ 
    // Other options here 
}).bind('fileuploadadd', function (e, data) { 
    data.url = $('input[name="dynamicURL"]').val(); 
}); 
संबंधित मुद्दे