2012-05-18 8 views
10

मेरा एएसपी.नेट एमवीसी (सी #) एप्लिकेशन .NET के लिए एसडीके का उपयोग करके अमेज़ॅन एस 3 में फ़ाइलों को अपलोड करने के लिए अपलोडिफ़ाई का उपयोग कर रहा है, लेकिन यह गलत अपलोड प्रगति दिखाता है।एसडीके का उपयोग करके अमेज़ॅन एस 3 में फ़ाइल अपलोड करते समय दिखाए गए गलत अपलोड प्रगति और

जब मैं अपलोडिफ़ी का उपयोग कर सीधे हमारे सर्वर पर एक फ़ाइल अपलोड करता हूं तो यह ठीक काम करता है। हालांकि, जब मैं अमेज़ॅन एस 3 ट्रांसफर यूटिलिटी का उपयोग कर एक फाइल अपलोड करता हूं। अपलोड विधि, प्रगति पट्टी 100% पूर्णता से जल्दी दिखाती है, लेकिन मुझे अपलोडिफ़ी onComplete ईवेंट प्राप्त करने के लिए लंबे समय तक इंतजार करना होगा। मेरा कोड नीचे दिखाया गया है।

सी # कोड:

using (transferUtility = new TransferUtility(AWSAccessKey, AWSSecretKey)) 
{ 
    try 
    { 
     TransferUtilityUploadRequest request = new TransferUtilityUploadRequest(); 

     request.WithBucketName(AWSBucket) 
      .WithKey(folderKey) 
      .WithTimeout(5 * 60 * 1000) 
      .WithInputStream(uploadFileStream); 

     request.WithCannedACL(S3CannedACL.PublicRead); 

     transferUtility.Upload(request); 
    }     
    catch (AmazonS3Exception amazonS3Exception) 
    { 
     throw amazonS3Exception; 
    } 
} 

जावा स्क्रिप्ट कोड:

jQuery(document).ready(function() { 
    var allowdfileext='*.doc;*.docx;*.pdf;' 
    var extarray=allowdfileext.split(';'); 

    jQuery('#proposalUploadFile').uploadify({ 
     'uploader': '/Content/uploadify/uploadify.swf', 
     'script': '/File/Upload', 
     'folder': '/uploads', 
     'buttonImg':'/Content/uploadify/upload-file.jpg', 
     'cancelImg': '/Content/uploadify/cancel.png', 
     'auto': true,    
     'height': '25', 
     'width': '95', 
     'wmode':'transparent', 
     'sizeLimit': '20971520', 
     'onComplete': fileUploaded, 
     'multi': false, 
     'scriptData': { 
      'saveToFolder': 'Temp', 
      'fileextension':'*.doc;*.docx;*.pdf;', 
      'subdomain':'qa','saveInLocal':'True' 
     }, 
     'fileExt':'*.doc;*.docx;*.pdf;', 
     'fileDesc':'Files (*.doc;*.docx;*.pdf;)', 
     'onAllComplete': fileUploadCompleted, 
     'onError' : function(event, ID, fileObj, errorObj) { 
      var r = '<br />ERROR: '; 

      switch(errorObj.info) { 
       case 405: 
        r += 'Invalid file type.'; 
        break; 
       case 406: 
        r += 'Some other error.'; 
        break; 
       default: 
        r += 'Some other error.'; 
        break; 
      }  
     } 
    }); 
}); 

क्यों प्रगति बार अपडेट नहीं हो रहा है जैसे मैं इसे करने की उम्मीद कर रहा हूँ?

उत्तर

0

ट्रांसफर यूटिलिटी सर्वर की तरफ से एसएफएफ़ क्लाइंट पर कैसे संचार करेगी? मुझे लगता है कि क्लाइंट से सर्वर पर अपलोड प्रगति पट्टी में दिखाई देगा। इसके बाद, S3 पर सर्वर स्थानांतरण (स्थानीय फ़ाइल में लिखने से बहुत धीमा) होगा, जो क्लाइंट (SWF) को सूचित नहीं किया जाएगा। यह अपलोड के बीच देरी के लिए 100% तक पहुंचने के लिए जिम्मेदार होगा और फिर पृष्ठ को जवाब देने के लिए प्रतीक्षा करनी होगी।

0

आमतौर पर, एक कॉन्फ़िगरेशन अनुभाग होता है जहां आप राज्य प्रदाता में प्रगति की स्थिति को अद्यतन करने के लिए समय निर्धारित कर सकते हैं। आपके मामले में मुझे लगता है कि ऐसा कुछ होना चाहिए।

साफ में इस कॉन्फ़िगर को stateMergeIntervalSeconds द्वारा सेट किया गया है। मुझे आशा है कि यह मदद मिलेगी।

2

अनिवार्य रूप से दो अपलोड हो रहे हैं। एक बार वेब पेज से आपके सर्वर पर और एक बार आपके सर्वर से क्लाउड तक।

जो आप देख रहे हैं वह वेबपृष्ठ से आपके अपलोड हैंडलर पर अपलोड प्रगति है। ब्राउज़र केवल क्लाइंट से आपके सर्वर पर भेजे जा रहे डेटा के बारे में जानता है, न कि आपके सर्वर से डेटा को S3 पर भेजा जा रहा है।

कुछ जटिल जटिल सर्वर काम किए बिना, सटीक अपलोड प्रगति मूल्य प्राप्त करना संभव नहीं है। मैं पूरी तरह से कॉलबैक निकाल दिए जाने तक एस 3 पर अपलोड को संभालने या प्रगति को 100% से कम करने के लिए पृष्ठभूमि थ्रेड से फायरिंग करने की सलाह दूंगा।

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