7

我正在尝试将一个文件从一个存储桶复制到另一个存储桶,但我无法缝合以查看目标存储桶上的新文件。

完全没有错误...

要求:

在此处输入图像描述

回复:

<?xml version="1.0" encoding="UTF-8"?>
<CopyObjectResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <LastModified>2012-04-08T11:26:36.000Z</LastModified
    <ETag>&quot;a5f9084078981b64737b57dbf1735fcf&quot;</ETag>
</CopyObjectResult>

但是我一直在检查 S3 上的上次修改日期,我找不到有关这个新文件的任何信息,或者我可以直接访问它

http://jk-v20.s3.amazonaws.com/PublicFiles/3ff28e21-4801-47c6-a6d0-e370706d303f_Content_Favicon.ico

我究竟做错了什么?


方法:

public void DuplicateFileInCloud(string original, string destination)
{
    try
    {
        CopyObjectRequest request = new CopyObjectRequest();

        if (original.StartsWith("http"))
        {
            // could be from other bucket, URL will show all data
            // example: http://jk-v30.s3.amazonaws.com/PredefinedFiles/Favicons/002.ico
            string bucket = getBucketNameFromUrl(original), // jk-v30
                    key = getKeyFromUrl(original);          // PredefinedFiles/Favicons/002.ico

            request.WithSourceBucket(bucket);
            request.WithSourceKey(key);
        }
        else
        {
            // same bucket: copy/paste operation
            request.WithSourceBucket(this.bucketName);
            request.WithSourceKey(original);
        }

        request.WithDestinationBucket(this.bucketName);
        request.WithDestinationKey(destination);
        request.CannedACL = S3CannedACL.PublicRead;

        using (AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(this.accessKey, this.secretAccessKey))
        {
            S3Response response = client.CopyObject(request);
            response.Dispose();
        }
    }
    catch (AmazonS3Exception s3Exception)
    {
        throw s3Exception;
    }
}
4

3 回答 3

5

http://jk-v20.s3.amazonaws.com//PublicFiles/3ff28e21-4801-47c6-a6d0-e370706d303f_Content_Favicon.ico

是文件所在的位置。(注意双斜线。// ..)如果您点击此网址,您会看到 ico 文件。所以它与前导斜杠有关,它可以由您的工具集自动添加。

于 2012-04-16T21:49:55.287 回答
0

你可以发布请求(带有标题),用提琴手之类的东西捕获吗?

文档表明源路径应该以斜杠开头(即完全限定),您尝试过吗?

x-amz-copy-source: /source_bucket/sourceObject

也许框架会为您做到这一点,但您的目的地有一个前导斜线,所以也许......

于 2012-04-15T16:38:51.727 回答
0

代码看起来正确,我在我的工作应用程序中使用了类似的东西。

在您的 s3 存储桶上启用服务器访问日志记录以了解幕后发生的事情可能会有所帮助 - http://docs.amazonwebservices.com/AmazonS3/latest/dev/ServerLogs.html

于 2012-04-16T13:30:17.933 回答