2009-09-30 39 views
6

Tôi hiện đang cố gắng phát triển một ứng dụng để tải tệp lên một thùng Amazon S3 bằng cách sử dụng cURL và C++. Sau khi đọc kỹ hướng dẫn phát triển S3, tôi đã bắt đầu triển khai ứng dụng bằng cách sử dụng cURL và tạo Header theo hướng dẫn của nhà phát triển và sau nhiều thử nghiệm và lỗi để xác định cách tốt nhất để tạo chữ ký S3. . Tiêu đề nhận được cho thấy rằng phương pháp tôi đang sử dụng không được triển khai. Tôi không chắc chắn nơi tôi sai nhưng đây là tiêu đề HTTP mà tôi đang gửi đến amazon:Tải lên Amazon S3 bằng cách sử dụng cURL/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 

Tôi đã cắt ngắn Tên nhóm, ID khóa truy cập và Chữ ký vì lý do bảo mật.

Tôi không chắc mình đang làm gì sai nhưng tôi nghĩ rằng lỗi được tạo do Trường chấp nhận và chuyển mã hóa (Không thực sự chắc chắn). Vì vậy, bất cứ ai có thể cho tôi biết những gì tôi đang làm sai hoặc lý do tại sao tôi nhận được một 501.

+0

quyết: đã mất tích một CURLOPT cho kích thước tập tin trong mã của tôi và bây giờ mọi thứ đều làm việc hoàn hảo –

Trả lời

-1

quyết: đã mất tích một CURLOPT cho kích thước tập tin trong mã của tôi và bây giờ tất cả mọi thứ đang làm việc một cách hoàn hảo

+3

Tùy chọn nào? Các tiêu đề thay đổi như thế nào? –

+0

Tôi không bao giờ hiểu tại sao mọi người trả lời với câu trả lời dọc theo dòng "Ồ, tôi đã tìm ra, nhưng tôi sẽ không nói cho bạn biết tôi đã làm gì để giải quyết nó mặc dù bạn đã dành thời gian để giúp tôi" giải thích về giải pháp của bạn , nếu không bạn đang lãng phí thời gian của mọi người. –

3

Bạn có thể thực hiện một tệp bash. Dưới đây là một ví dụ upload.sh kịch bản mà bạn chỉ có thể chạy như: 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} 

thêm về: http://www.jamesransom.net/?p=58

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

+0

Cảm ơn nhưng câu hỏi này là từ năm năm trước và nó dành cho Windows như thẻ gợi ý. –

Các vấn đề liên quan