2009-09-30 12 views
6

का उपयोग कर अमेज़ॅन एस 3 पर अपलोड करना मैं वर्तमान में कर्ल और सी ++ का उपयोग कर अमेज़ॅन एस 3 बाल्टी में फ़ाइलों को अपलोड करने के लिए एक एप्लिकेशन विकसित करने की कोशिश कर रहा हूं। एस 3 डेवलपर्स गाइड को सावधानीपूर्वक पढ़ने के बाद मैंने कर्ल का उपयोग करके अपने एप्लिकेशन को कार्यान्वित करना शुरू कर दिया है और डेवलपर गाइड द्वारा वर्णित हैडर बनाने और एस 3 हस्ताक्षर बनाने का सबसे अच्छा तरीका निर्धारित करने के लिए कई परीक्षणों और त्रुटियों के बाद, अब मुझे 501 त्रुटि का सामना करना पड़ रहा है । प्राप्त हेडर सुझाव देता है कि जिस विधि का मैं उपयोग कर रहा हूं वह लागू नहीं किया गया है।कर्ल/libcurl

PUT /test1.txt HTTP/1.1 
Accept: */* 
Transfer-Encoding: chunked 
Content-Type: text/plain 
Content-Length: 29 
Host: [BucketName].s3.amazonaws.com 
Date: [Date] 
Authorization: AWS [Access Key ID]:[Signature] 
Expect: 100-continue 

मैं सुरक्षा कारणों के लिए बाल्टी नाम, एक्सेस कुंजी आईडी और हस्ताक्षर छोटा कर दिया गया है: मुझे यकीन है कि जहां मैं गलत हूँ लेकिन यहाँ HTTP शीर्ष लेख है कि मैं अमेज़न करने के लिए भेज रहा है नहीं कर रहा हूँ।

मुझे यकीन नहीं है कि मैं क्या गलत कर रहा हूं लेकिन मुझे लगता है कि त्रुटि स्वीकृति और स्थानांतरण-एन्कोडिंग फ़ील्ड (वास्तव में निश्चित नहीं) के कारण उत्पन्न हो रही है। तो किसी को भी मुझे बता सकते हैं मैं गलत क्या कर रही हूं या मैं क्यों हो रही है एक 501.

+0

हल: यहाँ एक उदाहरण upload.sh स्क्रिप्ट जो आप बस के रूप में चला सकते है मेरी कोड में फ़ाइल आकार के लिए एक CURLOPT याद आ रही थी और अब सब कुछ है पूरी तरह से काम कर रहे हैं –

उत्तर

-1

हल: मेरे कोड में फ़ाइल आकार के लिए एक CURLOPT याद आ रही थी और अब सब कुछ पूरी तरह से काम कर रहा है

+3

क्या विकल्प? हेडर कैसे बदल गए? –

+0

मैं कभी समझ नहीं पा रहा हूं कि लोगों ने जवाब के साथ जवाब क्यों दिया, "ओह मैंने इसे समझ लिया, लेकिन मैं आपको यह बताने वाला नहीं हूं कि मैंने इसे हल करने के लिए क्या किया है, भले ही आपने मेरी मदद करने के लिए समय बिताया" आपके समाधान पर विस्तृत करें , अन्यथा आप लोगों के समय बर्बाद कर रहे हैं। –

3

आप पर अमल कर सकता है एक बैश फ़ाइल। sh upload.sh yourfile

#!/bin/bash 
file=$1 
bucket=YOUR_BUCKET 
resource="/${bucket}/${file}" 
contentType="application/x-itunes-ipa" 
dateValue=`date -R` 
stringToSign="PUT\n\n${contentType}\n${dateValue}\n${resource}" 
s3Key=YOUR_KEY_HERE 
s3Secret=YOUR_SECRET 
echo "SENDING TO S3" 
signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64` 
curl -vv -X PUT -T "${file}" \ 
-H "Host: ${bucket}.s3.amazonaws.com" \ 
-H "Date: ${dateValue}" \ 
-H "Content-Type: ${contentType}" \ 
-H "Authorization: AWS ${s3Key}:${signature}" \ 
https://${bucket}.s3.amazonaws.com/${file} 

अधिक पर: http://www.jamesransom.net/?p=58

http://www.jamesransom.net/?p=58

+0

धन्यवाद लेकिन यह सवाल पांच साल पहले से था और यह टैग के सुझाव के रूप में विंडोज के लिए है। –

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

  • कोई संबंधित समस्या नहीं^_^