2011-02-28 16 views
6

मैं एक साधारण प्रोजेक्ट के साथ अमेज़ॅन एस 3 का उपयोग कर रहा हूं, जब उपयोगकर्ता फ़ाइल अपलोड करता है, तो मैं पहले अपने डेटाबेस में विवरण भेजने के लिए XMLHTTPRequest का उपयोग करता हूं, फिर फॉर्म पोस्ट को ट्रिगर करता हूं जो फ़ाइल को सीधे S3 पर अपलोड करता है।अमेज़ॅन एस 3 पोस्ट, घटना कब हुई?

क्या मैं काफी काम नहीं कर सकता हूं, हालांकि यह कहने के लिए कि अपलोड कब किया जाए, इसलिए मैं डिस्प्ले को सही तरीके से अपडेट कर सकता हूं (मैं फिलहाल धोखा दे रहा हूं और डेटाबेस में सहेजने के बाद ही डिस्प्ले अपडेट कर रहा हूं, आप छोटे अपलोड के लिए मुश्किल से बता सकते हैं, लेकिन स्पष्ट रूप से लंबे समय तक एक समस्या है।)

अपलोड पूर्ण होने के बाद एस 3 सर्वर "नेविगेशन रद्द करना" प्रतीत होता है, इसलिए पृष्ठ पुनः लोड नहीं होता है - क्या कोई ऐसी घटनाएं हैं निकाल दिया गया है कि अपलोड का पूरा होने पर पता लगाने के लिए मैं इसका उपयोग कर सकता हूं?

धन्यवाद

संपादित करें: मैं यहाँ http://s3.amazonaws.com/doc/s3-example-code/post/post_sample.html से प्रपत्र कोड का उपयोग कर रहा सिर्फ फार्म का है कि मेरे अपने सर्वर से XMLHttpRequest आग से पहले प्रपत्र अमेज़न पर पोस्ट हो जाती एक ऑनसबमिट गयी।

उत्तर

23

अमेज़न S3 यूआरएल success_action_redirect फ़ील्ड में निर्दिष्ट पर रीडायरेक्ट करेगा या यदि वह निर्दिष्ट नहीं किया है, यह success_action_status में निर्दिष्ट स्थिति कोड के साथ एक खाली दस्तावेज़ देता है।

POST के पूरा होने पर, उपयोगकर्ता को सफलता_action_redirect फ़ील्ड में निर्दिष्ट स्थान पर रीडायरेक्ट किया जाता है। अगर अमेज़ॅन एस 3 यूआरएल की व्याख्या नहीं कर सकता है, तो यह success_ target_redirect फ़ील्ड को अनदेखा करता है।

यदि सफलता_action_redirect निर्दिष्ट नहीं है, तो अमेज़ॅन एस 3 सफलता_action_status फ़ील्ड में निर्दिष्ट खाली दस्तावेज़ प्रकार देता है।

यदि पोस्ट विफल रहता है, तो अमेज़ॅन एस 3 एक त्रुटि प्रदर्शित करता है और एक रीडायरेक्ट प्रदान नहीं करता है।

अधिक जानकारी के लिए AWS docs देखें।

+0

लवली, धन्यवाद जियोफ - मैंने दस्तावेज़ों में success_pre_redirect को देखा है, लेकिन पढ़ें 'रीडायरेक्ट फ़ील्ड नाम बहिष्कृत है और रीडायरेक्ट फ़ील्ड नाम के लिए समर्थन भविष्य में हटा दिया जाएगा।' अब जब आपने इसे दोबारा पढ़ा है, मुझे एहसास है कि यह पूरी सुविधा नहीं है जिसे बहिष्कृत किया गया है, लेकिन केवल इसे करने के लिए 'रीडायरेक्ट' नामक फ़ील्ड (धीमा पढ़ना चाहिए!)। यह काम कर जाना चाहिए। धन्यवाद। – MalphasWats

+0

@MalphasWats - हाँ, मैंने देखा कि दस्तावेज़ों में भी। एक नज़र में, उनका मतलब क्या गलत है इसका गलत अर्थ है। –

+1

@MalphasWats - आपको पता है कि आपको मैन्युअल रूप से बक्षीस को असाइन करने की आवश्यकता है ... बस कह रहा है ... ;-) –

1

अमेज़ॅन एस 3 किसी भी प्रकार की घटना को ट्रिगर नहीं करेगा, लेकिन आपका XMLHTTPRequest कोड कॉलबैक ट्रिगर करने में सक्षम होना चाहिए जब S3 HTTP 200 स्थिति कोड देता है।

यदि S3 सफल प्रतिक्रिया कोड नहीं लौटा रहा है, तो यह संभव है कि S3 को पता न हो कि आपका अपलोड पूरा हो गया है। क्या आप अपने अनुरोध के हिस्से के रूप में Content-Length शीर्षलेख भेज रहे हैं?

+0

ऐसा नहीं है कि मुझे पता है - मैं फ़ाइल भेजने के लिए एक साधारण पोस्ट फॉर्म का उपयोग कर रहा हूं, इसलिए XMLHTTPRequest अमेज़ॅन के साथ बिल्कुल संवाद नहीं करता है, यह मेरे सर्वर पर विवरण भेजता है तो बस form.submit को ट्रिगर करता है() एस 3 बाल्टी में - मुझे नहीं लगता कि फ़ॉर्म में सामग्री-लंबाई शीर्षलेख जोड़ने का एक आसान तरीका है? – MalphasWats