私は次のものを返す第三者サーバーを使用しています。 1)URL 2)ACL 3)政策 4) 5 awsAccesskeyID)署名 6)キー 私は、次のコードAmazon S3Clientを使用してS3にファイルをアップロードする。
final File localFile = new File(localFilePath);
final Part[] parts = { new StringPart("acl", acl),
new StringPart("policy", policy),
new StringPart("AWSAccessKeyId", awsAccessKeyId),
new StringPart("signature", signature),
new StringPart("key", key, HTTP.UTF_8),
new FilePart("file", localFile) };
final MultipartRequestEntity mpRequestEntity = new MultipartRequestEntity(parts, filePost.getParams());
filePost.setRequestEntity(mpRequestEntity);
final HttpClient client = new HttpClient();
try
{
status = client.executeMethod(filePost);
}
を使用してファイルをアップロードすることができます。しかし、今、私は次のコードを使用してAmazonS3Clientを使用したいが、その投げ例外
10-31 16その:21:36.070:INFO/com.amazonaws.request(13882):受信したエラー 応答:ステータスコード:403、AWSリクエストID:51F7CB27E58F88FD、AWS エラーコード:SignatureDoesNotMatch、AWSエラーメッセージ:計算した 署名の署名と、指定した署名が一致しません。あなたの鍵と署名の方法を確認し 、S3に拡張されたリクエストID:
final AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(awsAccessKeyId, key));
// Create a list of UploadPartResponse objects. You get one of these
// for each part upload.
final List<PartETag> partETags = new ArrayList<PartETag>();
// Step 1: Initialize.
final InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(targetURL, key);
final InitiateMultipartUploadResult initResponse = s3Client.initiateMultipartUpload(initRequest);
final File file = new File(localFilePath);
final long contentLength = file.length();
long partSize = 5242880; // Set part size to 5 MB.
try
{
// Step 2: Upload parts.
long filePosition = 0;
for (int i = 1; filePosition < contentLength; i++)
{
// Last part can be less than 5 MB. Adjust part size.
partSize = Math.min(partSize, (contentLength - filePosition));
// Create request to upload a part.
final UploadPartRequest uploadRequest = new UploadPartRequest().withBucketName(targetURL).withKey(key)
.withUploadId(initResponse.getUploadId()).withPartNumber(i).withFileOffset(filePosition)
.withFile(file).withPartSize(partSize);
// Upload part and add response to our list.
partETags.add(s3Client.uploadPart(uploadRequest).getPartETag());
filePosition += partSize;
}
// Step 3: complete.
final CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(targetURL, key,
initResponse.getUploadId(), partETags);
s3Client.completeMultipartUpload(compRequest);
}
catch (final Exception e)
{
s3Client.abortMultipartUpload(new AbortMultipartUploadRequest(targetURL, key, initResponse.getUploadId()));
return false;
}
return true;
YwNNsWOXg71vXY1VS0apHnHpHp4YVWRJ63xm8C7w36SYg1MNuIykw75YhQco5Lk7は、私はここで何かが足りないのですか?
を行って..私は誤解していました署名とキーについて.. http://dextercoder.blogspot.in/2012/02/multipart-upload-to-amazon-s3-in-three.html – knocker
こんにちは、このコードを使用して、アップロードを一時停止して後で再開しますか? – AndroidDev