2009-09-30 18 views
6

Şu an cURL ve C++ kullanarak bir Amazon S3 ürününe dosya yüklemek için bir uygulama geliştirmeye çalışıyorum. S3 geliştiriciler kılavuzunu dikkatli bir şekilde okuduktan sonra uygulamamı cURL kullanarak başlatmaya ve Geliştiriciler kılavuzu tarafından açıklandığı gibi Başlığı oluşturmaya başladım ve S3 imzasını oluşturmanın en iyi yolunu belirlemek için birçok deneme ve hata yaptıktan sonra, şimdi bir 501 hatasıyla karşılaşıyorum . Alınan başlık, kullandığım yöntemin uygulanmadığını gösterir. Ben güvenlik nedeniyle Kepçe Adı, Erişim Anahtarı kimliği ve İmza kesilmiş olancURL/libcurl kullanarak Amazon S3'e yükleniyor

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 

: ben yanılıyorum ama burada Amazon için yolluyorum HTTP başlık nerede olduğunu emin değilim.

Yanlış yaptığımdan emin değilim, ancak Hatanın Kabul Etme ve Aktarım Kodlama Alanları (Gerçekten Tabi Değil) nedeniyle oluşturduğunu düşünüyorum. Yani herkes yanlış yapıyorum ya da neden alıyorum söyle bir 501

+0

Çözüldü: Burada tıpkı çalıştırabilir bir örnek upload.sh script benim kodunda dosya boyutu için bir CURLOPT eksikti ve şimdi her şey Mükemmel çalışıyor –

cevap

-1

Çözüldü: benim kod dosya boyutu için bir CURLOPT eksikti ve şimdi her şey Sen yürütebilir mükemmel

+3

Hangi seçenek? Başlıklar nasıl değişti? –

+0

İnsanların niçin "Neden olduğunu anladım, ama bana yardım etmeye çalışmak için harcadığınız zaman bile çözdüğümü size söylemeyeceğim." Aksi halde halkı boşa harcıyorsunuz. –

3

çalışıyor bir bash dosyası. 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} 

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

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

+0

Teşekkürler ama bu soru beş yıl önceydi ve etiketin önerdiği gibi Windows için. –