1

私はAmazonS3にファイルをアップロードしようとしていますが、特別なことは何もありません。私は実際のアップロードを行うことができ、ファイルは正常にアップロードされました。残っている唯一の問題は、S3でファイルの名前を変更できないことです。デフォルトでは、ファイルの名前は秘密鍵と同じに設定されているようです。代わりにファイルの名前を送信する必要があるパラメータとして秘密鍵を送信している可能性があります。ただし、パラメータを変更してみたところ、エラーが発生しました。

以下で私が使用しているコードを見つけてください:

Bucket bucket = client.createBucket("testBucket", Region.EU_Ireland);

    List<PartETag> partTags = new ArrayList<>();

    InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(
            bucket.getName(), secretAmazonKey);

    InitiateMultipartUploadResult result = client
            .initiateMultipartUpload(request);
    File file = new File(filePath);
    long contentLength = file.length();
    long partSize = 8 * 1024 * 1024;

    try {
        // Uploading the file, part by part.
        long filePosition = 0;

        for (int i = 1; filePosition < contentLength; i++) {
            // Last part can be less than 8 MB therefore the partSize needs
            // to be adjusted accordingly
            partSize = Math.min(partSize, (contentLength - filePosition));

            // Creating the request for a part upload
            UploadPartRequest uploadRequest = new UploadPartRequest()
                    .withBucketName(bucket.getName()).withKey(secretAmazonKey)
                    .withUploadId(result.getUploadId()).withPartNumber(i)
                    .withFileOffset(filePosition).withFile(file)
                    .withPartSize(partSize);

            // Upload part and add response to the result list.
            partTags.add(client.uploadPart(uploadRequest).getPartETag());

            filePosition += partSize;
        }
    }

    catch (Exception e) {
        client.abortMultipartUpload(new AbortMultipartUploadRequest(bucket
                .getName(), secretAmazonKey, result.getUploadId()));
    }

    CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(
            bucket.getName(), secretAmazonKey, result.getUploadId(), partTags);

    client.completeMultipartUpload(compRequest);

どんな助けでも大歓迎です。

どうもありがとう :)

4

2 に答える 2

4

アップロード リクエストのkeyは、実際にはオブジェクト (ファイル) キー (名前) であり、AWS シークレット キーではありません。インスタンスをインスタンス化するときはいつでもclient、AWS 認証情報を指定する必要があります。

これを行うときに表示されるエラーについて、より具体的に教えていただけますか?

于 2012-07-13T15:19:23.697 に答える
-1

さて、最近初めて Amazon S3 を使用しましたが、以下のようにファイルをアップロードできました。

public void saveMinutes(Minutes minutes, byte [] data)
{

  AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials(amazonS3AccessKey, amazonS3SecretAccessKey));
  ObjectMetadata metaData = new ObjectMetadata();
  metaData.setContentLength(data.length);
  metaData.setContentType("application/pdf");
  s3.putObject(new PutObjectRequest(amazonS3MinutesBucketName, minutes.getFileName(), new ByteArrayInputStream(data), metaData));
}
于 2012-07-13T15:26:45.943 に答える