从Windows应用程序上传文件到S3 Amazon?

时间:2013-02-12 12:31:50

标签: vb.net amazon-web-services amazon-s3

我是亚马逊S3的新用户,在搜索了亚马逊&很多网站我都取得了一些进展。

我正在创建一个窗口从应用程序上传文件。我尝试使用以下代码,但它没有上传文件,也没有任何错误。

如果我评论.withKey属性而不是文件被上传到存储桶的根目录,而是我想上传到文件夹中的特定文件夹。

Try
        Dim fileTransferUtility As New TransferUtility(client)
        Dim request As TransferUtilityUploadRequest = New TransferUtilityUploadRequest
        Dim S3_KEY As String = "MitsTest/CVs"  'I want to upload file to CVs folder


        With request
            .BucketName = "mybucketname"
            .WithKey(S3_KEY)
            .WithFilePath("C:\Users\mitesh\Desktop\s3.txt")
            .WithTimeout(FIVE_MINUTES)
        End With
        fileTransferUtility.Upload(request)

    Catch ex As Exception

    Finally

    End Try

我也尝试使用以下和相同的结果,我没有得到任何错误但文件没有上传。

Dim Filepath = "C:\Users\mitesh\Desktop\s3.txt"
Dim FolderName = "MitsTest/CVs/"
Dim PutRequest As New PutObjectRequest()

    Try
        With PutRequest
            .WithBucketName("mybucketname")
            '.WithKey(FolderName + "/" + FilePath)
            .WithKey(FolderName)
            .WithFilePath(FilePath)
            .StorageClass = S3StorageClass.Standard
            .ServerSideEncryptionMethod = ServerSideEncryptionMethod.None
            '.WithContentBody(String.Empty)
            Dim response As S3Response = client.PutObject(PutRequest)
            response.Dispose()

        End With

    Catch ex As Exception
        Stop
    End Try

如果我取消注释该行'.WithKey(FolderName +“/”+ FilePath)并从文件夹名称中删除正斜杠(/),那么我得到“我们计算的请求签名与您提供的签名不匹配。你的密钥和签名方法。“错误。

我在这里错过了什么或做错了什么?任何帮助都会非常感激。

问候

Mitesh

1 个答案:

答案 0 :(得分:0)

您收到签名错误的原因是“C:\ users ..”中的反斜杠字符对于键名无效。您应该使用正斜杠替换它们,或者为键名使用不同的值。

在您的第一个示例中,您实际上是尝试上传到“MitsTest / CVs”键。您需要附加文件名,如下所示:

.WithKey(S3_KEY+ "/" + "s3.txt")