के साथ पॉलिसी पर हस्ताक्षर करना मैं एक ऐसा निर्माण करने की कोशिश कर रहा हूं जो उपयोगकर्ताओं को सीधे मेरे अमेज़ॅन एस 3 बाल्टी में एक नोडजेएस संचालित वेबसाइट से फ़ाइल अपलोड करने की अनुमति दे। ऐसा लगता है कि the actual amazon docs for this के अलावा, यह बहुत ही पुराना ट्यूटोरियल है।अमेज़ॅन एस 3 पोस्ट एपीआई, और नोडजेएस
मैं निम्नलिखित जानकारी के लिए this tutorial का पालन कर रहा हूं, लेकिन फिर से यह दिनांक समाप्त हो गया है। इसमें crypto
सही तरीके से विधि नहीं है, क्योंकि यह update
विधि पर एक कच्ची जावास्क्रिप्ट ऑब्जेक्ट पास करने का प्रयास करता है, जो त्रुटि उत्पन्न करता है क्योंकि यह स्ट्रिंग या बफर नहीं है।
मैं the knox npm package के स्रोत को भी देख रहा हूं। इसमें पोस्ट समर्थन नहीं है - जिसे मैं पूरी तरह से समझता हूं, क्योंकि ब्राउजर सही क्षेत्र में एक बार पोस्ट कर रहा है। नोक्स में नीति पर हस्ताक्षर करने का सही कोड प्रतीत होता है, और मैंने इस पर आधारित अपना कोड काम करने की कोशिश की है ... लेकिन फिर से कोई फायदा नहीं हुआ।
कोड के लिए मैं यहां आया हूं। यह बेस 64 एन्कोडेड नीति बनाता है, और यह एक हस्ताक्षर बनाता है ... लेकिन जब मैं फ़ाइल अपलोड करने का प्रयास करता हूं तो यह अमेज़ॅन के अनुसार गलत हस्ताक्षर है।
var crypto = require("crypto");
var config = require("../../amazonConfig.json");
exports.createS3Policy = function(callback) {
var date = new Date();
var s3Policy = {
"expiration": "2014-12-01T12:00:00.000Z",
"conditions": [
{"acl": "public-read"},
["content-length-range", 0, 2147483648],
{"bucket": "signalleaf"},
["starts-with", "$Cache-Control", ""],
["starts-with", "$Content-Type", ""],
["starts-with", "$Content-Disposition", ""],
["starts-with", "$Content-Encoding", ""],
["starts-with", "$Expires", ""],
["starts-with", "$key", "/myfolder/"],
{"success_action_redirect": "http://example.com/uploadsuccess"},
]
};
var stringPolicy = JSON.stringify(s3Policy).toString("utf-8");
var buffer = Buffer(stringPolicy, "utf-8");
var encoded = buffer.toString("base64");
var signature = crypto.createHmac("sha1", config.secretKey)
.update(new Buffer(stringPolicy, "utf-8")).digest("base64");
var s3Credentials = {
s3PolicyBase64: encoded,
s3Signature: signature
};
GLOBAL.s3creds = s3Credentials;
callback(s3Credentials);
};
मैं स्पष्ट रूप से कुछ गलत कर रहा हूं। लेकिन मुझे नहीं पता कि क्या। क्या कोई यह पहचानने में मदद कर सकता है कि मैं क्या गलत कर रहा हूं? मेरी समस्या कहां है? क्या किसी के पास S3 REST api पर पोस्ट के लिए, NodeJS v0.10.x से, हस्ताक्षर के साथ, उचित अमेज़ॅन S3 नीति उत्पन्न करने के लिए एक ट्यूटोरियल ट्यूटोरियल है?
S3 के लिए सीधे कोई फ़ाइल अपलोड करने नहीं वास्तव में एक छोटी सी कार्य स्वत: फिर से शुरू, उपयोगकर्ता मेटाडाटा, आदि, आदि नीति सामान काफी जटिल हो _can_ है, खासकर यदि आप बेडौल समर्थन करना चाहते हैं,। एक लाइब्रेरी का उपयोग करने पर विचार करें जो मैं बनाए रखता हूं: [ठीक अपलोडर] (http://fineuploader.com)। यह सभी ब्राउज़रों में एस 3 पर प्रत्यक्ष अपलोड के लिए देशी समर्थन है, यहां तक कि आईई 7 भी। चंकिंग और ऑटो-रेज़्यूमे, अन्य सुविधाओं के साथ भी समर्थित हैं। इसके अलावा, मैंने एक [node.js सर्वर-साइड उदाहरण] (http://bit.ly/1do27a0) लिखा है कि, जब ठीक अपलोडर एस 3 के साथ जोड़ा गया है, तो आपके लिए सभी हस्ताक्षरों को संभालेगा। –
क्या आप इस टिप्पणी को उत्तर के रूप में पोस्ट कर सकते हैं? मैं आपकी लाइब्रेरी का उपयोग कर समाप्त कर सकता हूं। अभी भी मूल्यांकन करता है कि यह कैसे काम करता है, आदि –
मुझे यकीन नहीं है कि यह अच्छी तरह से खत्म हो जाएगा। इसे एक गरीब या लिंक-केवल उत्तर माना जा सकता है, बिल्कुल स्पष्ट रूप से। मेरी समझ यह है कि समुदाय विवरण के उत्तरों की तलाश में है जिसमें कोड शामिल है, और मेरा वह विवरण फिट नहीं है, इसलिए मैंने इसे एक टिप्पणी के रूप में पोस्ट किया है। यदि आपके पास ठीक अपलोडर के बारे में कोई प्रश्न है, तो SO पर ठीक-अपलोडर टैग पर एक नज़र डालें, जहां हम लाइब्रेरी के लिए समर्थन प्रश्नों को संभालते हैं। –